Python编程Day06-Python类

简介

  • 类(class): 主要是两个-类和类实例

定义

  • 用关键字class去定义一个类,如果没有指定父类 ,默认继承object类
class Human(object):
	pass

类属性

class Human(object):
	run=True
  • 类属性: 属性和类绑定,不是和实例绑定.说明这个属性是类共有的

实例属性

class Human(object):
	def __init__(self,name):
		self.name=name

human_a=Human("alan")
  • 实例属性: 实例属性是和实例绑定的,这个属性是实例特有的
    • 实例属性可以在实例创建后任意时间设置
    • 一般放在构造函数__init__()里

类方法

class Human(object):
	def __init__(self,name):
		self.name=name
	def walk(self):
		print self.name+"is walking"
human_a=Human("alan")
human_a.walk()
  • 类的方法可以看作是一种类属性
  • 传入的第一个参数self,表示调用这个类方法的实例

访问控制

  • 类实例的属性可以在外部随意更改
  • 如果不想让外部访问到,则在属性名字前加两个下划线__name,这样就无法从外部直接访问了
  • 通过get的接口可以访问
class Human(object):
	def __init__(self,name):
		self.name=name
	def walk(self):
		print self.name+"is walking"
	def get_name(self):
		return self.__name
human_a=Human("alan")
print human_a.get_name()
print human_a.name
  • 通过set接口可以更改__name字段
class Human(object):
	def __init__(self,name):
		self.__name=name
	def walk(self):
		print self.name+"is walking"
	def get_name(self):
		return self.__name
	def set_name():
		self.__name=name
human_a=Human("alan")
print human_a.set_name("bob")
  • 这样做的原因是可以增强代码的健壮性,直接暴露属性可能会有意想不到的后果,通过接口的方式可以加以控制

继承

  • 子类拥有父类的属性,方法.叫做继承
  • 子类同时可以拥有父类没有的属性,方法.叫做多态
  • 示例:
class Man(Human):
	def __init__(self,name,has_wife):
		self.name=name
		self.__has_wife=has_wife
  • 假设Human有很多属性,很多初始化步骤:
class Man(Human):
	def __init__(self,name,has_wife):	
		super(Man,self).__init__(name)
		self.__has_wife=has_wife

这里的super(Man,self)._ _ init_ _(name) 调用了父类Human的构造函数

  • 继续创建一个类:
class Woman(Human):
	def __init__(self,name,has_husband):
		super(Woman,self).__init__(name)
		self.__has_husband=has_husband
  • Man中可以创建其他方法:
class Man(Human):
	def __init__(self,name,has_wife):
		super(Man,self).__init__(name)
		self.__has_wife=has_wife
	def work(self):
		print "A Man is Working!"
	def run(self):
		print "A Man is Running!"
  • Woman也可以创建其他方法:
class Woman(Human):
	def __init__(self,name,has_husband):
		super(Woman,self).__init__(name)
		self.__has_husband=has_husband
	def shopping(self):
		print "A Woman is Shopping!"
	def cooking(self):
		print "A Woman is Cooking!"
发布了113 篇原创文章 · 获赞 95 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/JewaveOxford/article/details/103131686