文章目录

  • 91.类成员的继承和重写
    • 查看类的继承层次结构
    • 重写的两个例子

91.类成员的继承和重写

  1. 成员继承子类继承父类构造方法之外所有成员
  2. 方法重写:子类可以重新定义父类中的方法,这样就会覆盖父类的方法,也称为“重写”

【操作】继承重写的案例

class Person:def __init__(self, name, age):self.name = nameself.__age = age  # 私有属性def say_age(self):print("我的年龄:", self.__age) # 私有属性 给一个接口 访问 agedef say_introduce(self):  # 自我介绍的意思print("我的名字是{0}".format(self.name))class Student(Person):def __init__(self, name, age, score):Person.__init__(self, name, age)  # 必须显式的调用父类初始化方法,不然解释器不会去调用self.score = scoredef say_introduce(self):print("报告老师,我的名字是:{0}".format(self.name))s = Student("haizeiwang", 18, 80)
s.say_age()
s.say_introduce()

运行结果:

我的年龄: 18
报告老师,我的名字是:haizeiwang

查看类的继承层次结构

通过类的方法 mro()或者类的属性__mro__可以输出这个类的继承层次结构

【操作】 查看类的继承层次结构

class A:pass class B(A):pass
class C(B):passprint(C.mro())

执行结果:

# 从子孙后代开始排序。一直到 一切对象的 父类 object
[<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]

继承结构图

重写的两个例子

tips: 一定不要 和 python 内置的 命名 重复。

更加不要重复了 还 递归 调用。

其实这只是 一个例子罢了。 换汤不换药而已。

class Oar:def __init__(self,oar):self.o=oardef print_(self):print(self.o) # print 不会到class Oar下面找,除非引用self.printdef decorator(cls):def print_(self): print('content: {}'.format(self.o))return selfcls.print_=print_return cls# InheritOar=decorator(InheritOar) 装饰器 @ 符号等同于这一句
@decorator
class InheritOar(Oar):passi=InheritOar("uinp")
i.print_



class Person:def __init__(self,name,id_):self.name=nameself.id_=id_def print_(self):print("name : %s | id : %s"%(self.name,self.id_))class Student(Person):passdef print_(s):print("this is onepis print %s and %s"%(s.name,s.id_))def print_(self):print("this is onepis print %s  and %s "%(self.name,self.id_))Student.print_=print_s2=Student("Yamateh",2)s2.print_()


为什么最好 不要和python 关键字 重复命名。

看下面的示例

class Oar:def __init__(self,oar):self.o=oardef print(self):# 这里# 如果写 print(self.o) 会导致递归调用根本无法打印。# 并且你的 self  在 递归的时候 就被 self.o 给替换掉了。 # print 不会到全局下面找,而是 引用self.print# 所以你的打印就成了死循环return self.o
def decorator(cls):def print(self): return 'content: {}'.format(self.o)cls.print=printreturn cls# InheritOar=decorator(InheritOar) 装饰器 @ 符号等同于这一句
@decorator
class InheritOar(Oar):passi=InheritOar("uinp")
i.print

87_类成员的继承和重写相关推荐

  1. (原创)c#学习笔记10--定义类成员03--接口的实现01--显示实现接口成员

    10.3  接口的实现 在继续前,先讨论一下如何定义和实现接口.第9章介绍了接口定义的方式与类相似,使用的代码如下: interface IMyInterface {// Interface memb ...

  2. python类变量继承_python 类的成员及继承

    1. @staticmethod 静态方法 静态方法不能访问实例变量和类变量,除了身处类里面,所以只能通过类调用以外,它其实和类没有什么关系.如果想要用它访问实例变量或类变量,需要把实例和类传递给函数 ...

  3. 基类成员的public访问权限在派生类中变为_第17篇:C++继承中虚表的内存布局

    我们已经表明,非虚类的对象实例不包含虚指针,编译器在编译阶段也没有为非虚类没有构建虚表.而本篇我们会从简单的单继承链分析虚类中虚表构造过程和内存布局.这一切假定你有如下基础 对gdb调试器使用有一个比 ...

  4. python 笔记 之 类的继承与重写

    2019独角兽企业重金招聘Python工程师标准>>> ''' 6.继承 super 重写 调用:先找子类中的方法,如果子类中找不到就到父类中找 多继承:如果父类中都有该方法,那么先 ...

  5. C++多继承中重写不同基类中相同原型的虚函数

    在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA  {  public:  virtual void TestA();  };  class ...

  6. 使用“override”声明的成员函数不能重写基类成员_C++日志(三十五)虚基类与其子类的构造函数...

    第三十四篇日志中提到,子类对象调用父类同名的函数时需要使用作用域标识符进行限定,这是在任何继承情况下都可以使用的普适方法. 问题引入: 考虑一种特殊的情况:子类全部或部分的基类(称为中间基类)同是继承 ...

  7. C++中public/private/protected三种继承方式下基类成员对派生类的可见性探讨

     原文: http://blog.csdn.net/zgjxwl/article/details/4804233 1.public继承方式下 #include <iostream>   ...

  8. 派生类对基类成员的访问控制之公有继承

    公有继承 前面说过,派生类从基类继承时有三个步骤, 第一个步骤是吸收基类成员,吸收了基类中除构造函数和析构函数之外的所有数据成员和函数成员, 第二个步骤就是修改基类成员,包括修改对基类成员的访问属性和 ...

  9. Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合

    Python零基础速成班-第9讲-Python面向对象编程(上),对象和类.初始化.继承.重写.多态.类方法.组合 学习目标 修饰器 面向对象编程:对象和类.初始化.继承.重写.多态.类方法.组合 课 ...

最新文章

  1. 使用hibernate的this.getSession().createSQLQuery(sql).list();方法查询数据时出现查到的数据和想象的不一致,很是郁闷,诡异...
  2. 2022年Python数据分析的宝藏地带
  3. gentoo 安装时的网络配置
  4. 远程连接SQL Server数据库
  5. 【方便自己使用】KKT条件
  6. python读取excel写入mysql_python读取excel写入mysql
  7. Java基础-序列化和反序列化
  8. 360解压电脑版安装包_迅捷pdf转换器电脑版安装包下载-迅迅捷pdf转换器安装包免费下载...
  9. 2018.11.02 洛谷P2661 信息传递(拓扑排序+搜索)
  10. [原创]Jenkins持续集成工具介绍
  11. MySql之ALTER命令用法详细解读
  12. 个人成长(学习方法)
  13. CREO产品柔性建模 参数化 模具 TOP DOWN设计
  14. 电瓶车续航测试软件,谁的续航更真实? 新出行为你测试三款市面上主流电动车...
  15. 用php 用拼出一个菱形_用php语言编程:输出一个由“*”符号组成的菱形图形(必须使用for循环语句)...
  16. 应用笔记3816 ds 1302 估算涓流充电实时时钟的超级电容备份时间
  17. php后端学习重点是,后端开发新手/小白学习之-前后端如何交互详解和重点学习...
  18. 微信小程序 云开发之数据库-查找记录
  19. python3进阶之正则表达式之re模块之分组(group)、贪心匹配、编译
  20. python预测股票价格论文_基于机器学习的股票分析与预测模型研究

热门文章

  1. zepto+less写QQ音乐播放界面,进度条同步,歌词同步高亮等等(带注释,可参考可直接使用)
  2. 网络游戏排行榜计算机,十大pc游戏排行榜 英雄联盟位居第一,第三游戏体验感很强...
  3. [zt]拿两千块钱的薪水要有一万块的范儿--六六
  4. 肠道核心菌属——经黏液真杆菌属(Blautia),炎症肥胖相关的潜力菌
  5. 揭秘 | 一分钟看懂半导体FOWLP封装技术全过程!
  6. 最短路(dijkstrafloyed)
  7. 微信群里好玩的互动游戏有哪些?微信营销互动游戏盘点
  8. 计算机压缩文件上传无法打开,电脑打不开zip文件怎么解决并打开
  9. CSDN和MSDN名字分析
  10. 汉字拼音计算机,拼音_汉字计算机自动转换系统