python面向对象(part3)--继承

网友投稿 271 2022-08-31


python面向对象(part3)--继承

学习笔记 开发工具:Spyder

文章目录

​​继承​​

​​例子1​​​​例子2(isinstance)​​​​例子3(issubclass)​​​​举个例子4(变量继承)​​

​​相关概念​​

继承

定义

可以重用现有类的功能与概念,并在此基础上进行扩展。

优缺点

优点:①一种代码复用的方式。②以层次化的方式管理类。 缺点:耦合度高

语法

class 子类(父类): def __init__(self, 参数列表): super().__init__(参数列表) self.自身实例变量 = 参数

说明

①子类拥有父类的所有成员。 ②子类如果没有构造函数,将自动执行父类的,但如果有构造函数将覆盖父类的。此时必须通过super()函数调用父类的构造函数,以确保父类属性被正常创建。 ③子类直接具有父类的成员(共性),还可以扩展新功能。

作用

隔离客户端代码与功能的实现方式(隔离用和做)。

多继承

多继承即一个子类继承两个或两个以上的基类,父类中的属性和方法同时被子类继承下来。

例子1

代码:

class Person: def say(self): print("说")class Student(Person): def study(self): print("学习")class Teacher(Person): def teach(self): print("教")s01 = Student()s01.study()# 可以直接使用父类成员s01.say()p02 = Person()p02.say()# 父类不能使用子类成员# p02.study()t03 = Teacher()t03.teach()# 不能使用"兄弟"类成员# t03.study()

例子2(isinstance)

isinstance()方法可以鉴定一个对象是否兼容一个类

代码:

class Person: def say(self): print("说")class Student(Person): def study(self): print("学习")class Teacher(Person): def teach(self): print("教")s01 = Student()p02 = Person()# 判断一个对象是否"兼容"一个类型print(isinstance(s01,Person)) # Trueprint(isinstance(s01,Student)) # Trueprint(isinstance(s01,object)) # True#一个类要么直接,要么间接的继承object类print(isinstance(s01,Teacher)) # Falseprint(isinstance(p02,Student)) # False

例子3(issubclass)

issubclass()方法可以判断一个类是否为另一个类的子类

代码:

class Person: def say(self): print("说")class Student(Person): def study(self): print("学习")class Teacher(Person): def teach(self): print("教")# 判断一个类是否"兼容"一个类型print(issubclass(Student,Person)) # Trueprint(issubclass(Student,Teacher)) # Falseprint(issubclass(Student,(Teacher,Person))) # True#(Teacher,Person)中只要有一个为Student类的父类,就会返回True,否则为Falseprint(issubclass(Student,Student)) # True

举个例子4(变量继承)

代码:

class Person: def __init__(self,name): self.name = nameclass Student(Person): def __init__(self,name,score): # 通过函数,调用父类方法 super().__init__(name) self.score = scoreclass Teacher(Person): def __init__(self,name,salary): super().__init__(name) self.salary = salarys01 = Student("zs",100)print(s01.score)print(s01.name)p02 = Person("ww")print(p02.name)

相关概念

父类(基类、超类)、子类(派生类)。 父类相对于子类更抽象,范围更宽泛;子类相对于父类更具体,范围更狭小。 单继承:父类只有一个(例如 Java,C#)。 多继承:父类有多个(例如C++,Python)。 Object类:任何类都直接或间接继承自 object 类。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python基础(part16)--生成器
下一篇:基于springboot 配置文件context
相关文章

 发表评论

暂时没有评论,来抢沙发吧~