Python 类与继承/父类属性、方法的扩展 | 您所在的位置:网站首页 › python继承自 › Python 类与继承/父类属性、方法的扩展 |
一、属性继承与方法继承 class Person(object): def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex self.desc = '人' def run(self): print('{}岁的{}正在跑步'.format(self.age,self.name)) class Men(Person): pass xm = Men('小明','18','男') xm.run() print(xm.sex) print(xm.desc)运行结果: 18岁的小明正在跑步 男 人说明:子类默认继承父类的属性和方法(所有的类均继承自object,自python3后可省略不写)。 二、重写与覆盖 class Person(object): def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex self.desc = '人' def run(self): print('{}岁的{}正在跑步'.format(self.age,self.name)) class Men(Person): def __init__(self,hight): self.hight = hight def run(self): print('18岁的小明正在疯狂地跑步') xm = Men('182') xm.run() print(xm.desc)运行结果: 18岁的小明正在疯狂地跑步 Traceback (most recent call last): File "C:/Users/Administrator/Desktop/9999.py", line 24, in print(xm.desc) AttributeError: 'Men' object has no attribute 'desc'说明:子类中的__init__、run方法均重写,会覆盖掉本可以从父类继承过来的方法,且重写__init__方法后无法调用父类的静态属性了。 三、类的属性、方法的扩展(本质还是重写与覆盖) class Person(object): def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex self.desc = '人' def run(self): print('{}岁的{}正在跑步'.format(self.age,self.name)) class Men(Person): def __init__(self,name,age,sex,hight): super(Men,self).__init__(name,age,sex) # super().__init__(name,age,sex) 效果同上 # Person.__init__(self,name,age,sex) 效果同上上 self.hight = hight def run(self): super(Men,self).run() # super().run() 效果同上 # Person.run(self) 效果同上上 print('我是重写的run方法') xm = Men('小明','18','男','182') xm.run() print(xm.desc)运行结果: 18岁的小明正在跑步 我是重写的run方法 人说明:Men类的__init__方法可以在父类的基础上添加额外的属性,run方法可以在父类的基础上添加额外的逻辑;在子类的run方法中使用super(Men,self).run()调用父类方法后,可以实现类似于在父类方法的基础上添加额外逻辑的效果。 |
CopyRight 2018-2019 实验室设备网 版权所有 |