1、类的继承
当我们定义一个类的时候,可以从某个现有的类继承,新的类称为子类,而被继承的class称为基类、父类或超类,比如之前用到的object,它士所有类的父类。
继承的好处:
(1) 简化代码,减少冗余
(2) 子类可以获取父类的所有功能
示例:
classPerson(object):
def__init__(self, name, age):
self.name = name
self.age = age
defsay(self):
print("My Name Is %s"% (self.name))
defwork(self,job):
print("I can do:"+ job)
classMan(Person):
print("我继承Person")
per = Man("张三",20)#实例化一个对象
print(per.name, per.age)
per.say()#访问类方法
per.work("Coding")#访问类方法
输出:
>>>我继承Person
>>>张三 20
>>>My Name Is 张三
>>>I can do:Coding
说明:Man类只有一个打印功能,但是继承自Person类,所以也会有name、age属性、say方法、work方法。
2、多态
多态概念:当子类和父类都有相同的方法时,子类的方法会替换父类的方法,在代码运行时,会调用子类的同名方法,这就叫多态。
示例:
classPerson(object):
def__init__(self, name, age):
self.name = name
self.age = age
defsay(self):
print("My Name Is %s"% (self.name))
defwork(self,job):
print("I can do:"+ job)
classMan(Person):
defsay(self):#也定义一个say方法
print("%s 说:My Name Is %s"% (self.name,self.name))
print("我继承Person")
per = Man("张三",20)#实例化一个对象
print(per.name, per.age)
per.say()#访问类方法
per.work("Coding")#访问类方法
输出:
>>>我继承Person
>>>张三 20
>>>张三 说:My Name Is 张三
>>>I can do:Coding
说明:say方法相同,子类调用了自己的方法。
3、动态添加属性和方法
由于Python是动态语言,我们可以根据类创建的实例任意添加属性和方法。
示例:
fromtypesimportMethodType
classPerson(object):
def__init__(self, name, age):
self.name = name
self.age = age
per = Person("张三",20)
per.heght =170#动态添加属性
per.sex ="boy"#动态添加属性
print(per.name, per.age,per.heght,per.sex)
defsay(self):
print("My Name Is "+ self.name)
per.say = MethodType(say,per)#动态添加方法
per.say()
输出:
>>>张三 20 170 boy
>>>My Name Is 张三
4、__slots__
如果我们要限制随意添加属性,则可以使用__slots__方法。
示例:
classPerson(object):
__slots__= ("name","age")
per = Person()
per.name ="张三"
per.age =20
print(per.name, per.age)
per.heght =170#动态添加属性
print(per.heght)
输出:会有报错
领取专属 10元无门槛券
私享最新 技术干货