Python 类与继承/父类属性、方法的扩展 您所在的位置:网站首页 python继承自 Python 类与继承/父类属性、方法的扩展

Python 类与继承/父类属性、方法的扩展

2023-11-10 00:37| 来源: 网络整理| 查看: 265

一、属性继承与方法继承 

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 实验室设备网 版权所有