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

继承方法


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

类继承案例


在之前类的定义中我们定义一个学生(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
 
 
Relate Posts
deepseek-r1:7b和deepseek-r1:1.5b-qwen-distill-q4_K_M区别和释义
Lazy loaded image
CrewAI tool 调用是写在agents里还是task里
Lazy loaded image
Prompt Engeering
Lazy loaded image
Python测试开发
Lazy loaded image
基于大模型搭建本地私有化知识库的搭建与研究
Lazy loaded image
python中 self cls的区别
Lazy loaded image
Mac software & chrome plug-in backup探索山野,寻觅野生秋果,欣赏最后的金秋风景
Loading...
Alan_Hsu
Alan_Hsu
许心志我在 蓝湛阔天海 中定自主宰
统计
文章数:
181
Latest posts
deepseek-r1:7b和deepseek-r1:1.5b-qwen-distill-q4_K_M区别和释义
2025-2-14
CrewAI tool 调用是写在agents里还是task里
2025-2-14
Prompt Engeering
2025-2-9
Python测试开发
2025-2-7
2025_周报 #06
2025-2-7
2025_周报 #01
2025-2-6