当前位置 : 主页 > 编程语言 > python >

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

来源:互联网 收集:自由互联 发布时间:2022-06-15
学习笔记 开发工具:Spyder 文章目录 ​​继承​​ ​​例子1​​ ​​例子2(isinstance)​​ ​​例子3(issubclass)​​ ​​举个例子4(变量继承)​​ ​​相关概念​​ 继承 定义 可以重用

学习笔记
开发工具: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()

结果:
python面向对象(part3)--继承_python

例子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)) # True
print(isinstance(s01,Student)) # True
print(isinstance(s01,object)) # True
#一个类要么直接,要么间接的继承object类

print(isinstance(s01,Teacher)) # False
print(isinstance(p02,Student)) # False

结果:
python面向对象(part3)--继承_子类_02

例子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)) # True
print(issubclass(Student,Teacher)) # False
print(issubclass(Student,(Teacher,Person))) # True
#(Teacher,Person)中只要有一个为Student类的父类,就会返回True,否则为False
print(issubclass(Student,Student)) # True

结果:
python面向对象(part3)--继承_多继承_03

举个例子4(变量继承)

代码:

class Person:
def __init__(self,name):
self.name = name

class Student(Person):
def __init__(self,name,score):
# 通过函数,调用父类方法
super().__init__(name)
self.score = score

class Teacher(Person):
def __init__(self,name,salary):
super().__init__(name)
self.salary = salary

s01 = Student("zs",100)
print(s01.score)
print(s01.name)

p02 = Person("ww")
print(p02.name)

结果:
python面向对象(part3)--继承_多继承_04

内存图:
python面向对象(part3)--继承_子类_05

相关概念

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

【文章出处:香港多ip站群服务器 http://www.558idc.com/hkzq.html提供,感恩】
上一篇:python基础(part16)--生成器
下一篇:没有了
网友评论