type
status
date
slug
summary
tags
category
icon
password
标签
是否汉化
📌
醉眼看人间,人人都温柔,醒时看事态,事事都炎凉。
类的继承也是一个非常有用的设计,我们在新定义类时,如果它属于之前定义过类的一部分,则可以继承父类的特性。

继承方法


基本方法如下:
括号里的类名为父类,会继承父类(支持一到多个)里的所有属性和方法。通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。

类继承案例


在之前类的定义中我们定义一个学生(Student)类,我们现在需要一个大学生的类,它也是学生,可以继承学生类
我们来实例化使用一下:

方法重写


如果所继承的父类的方法无法满足使用,可以进行重写,这个过程叫方法的覆盖(override)。如上例中 Student 类的 say 方法不能满足,我们可以重写:
我们调用时,使用了我们重写的方法逻辑:

super() 函数


super() 函数是用于调用父类(超类)的一个方法,语法是:super(type[, object-or-type])super(SubClass, self).method() 的意思是,根据 self 去找 SubClass 的「父亲」,然后调用这个「父亲」的 method()。经常用在我们在子类中重写了父类中的方法,但有时候还是需要用父类中的方法。
执行如下:

多继承


如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。
MRO (Method Resolution Order):python 对于每一个类都有一个 MRO 列表,此表的生成有以下原则:子类永远在父类之前,如果有多个父类,那么按照它们在列表中的顺序被检查,如果下一个类有两个合法的选择,那么就只选择第一个。参考

继承性


类中的属性和方法有可继承性(inheritable versus)与不可继承属性(non-inheritable)之说,如果不希望其他类来继承,可以在命名变量名和函数名时用双下划线开头:
试着继续父亲的类(Father),然后调用相关属性和方法试试?这些私有函数的作用范围仅在当前类,其表象上可以被重写,但实际上并无重写的效果。

内置方法重载


除了对自己定义的方法进行重写,还可以对内置方法进行重写,如 __init__ ( self [,args...] ) 构造函数, 调用方法 obj = className(args)
更多的内容可以查看Python的内置类属性
 
 
 

🎒
离开乏味的皮囊,自由的灵魂在路上
  • Name: Alan Hsu
  • Tag: 随感、技术、经验、旅行、推荐、生活、音乐、电影 etc.
  • Email:xulanzhong521gmail.com
  • WeChat: Alan_Hsu_521
notion image
notion image
 
 
Mac software & chrome plug-in backup探索山野,寻觅野生秋果,欣赏最后的金秋风景
Loading...