Gointerface接口声明实现及作用详解
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~