Python面向对象继承的第三部分有哪些关键点?

2026-06-10 22:261阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1107个文字,预计阅读时间需要5分钟。

Python面向对象继承的第三部分有哪些关键点?

学习笔记+开发工具:Spyder+文章目录+继承+例子1+例子2(isinstance)+例子3(issubclass)+例子4(变量继承)+相关概念:继承+定义+可复用

学习笔记
开发工具:Spyder



文章目录

  • ​​继承​​
  • ​​例子1​​
  • ​​例子2(isinstance)​​
  • ​​例子3(issubclass)​​
  • ​​举个例子4(变量继承)​​
  • ​​相关概念​​


继承

  • 定义

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

  • 优缺点

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

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

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

Python面向对象继承的第三部分有哪些关键点?

  • 作用

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

  • 多继承

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

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

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

结果:

举个例子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)

结果:

内存图:

相关概念

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

本文共计1107个文字,预计阅读时间需要5分钟。

Python面向对象继承的第三部分有哪些关键点?

学习笔记+开发工具:Spyder+文章目录+继承+例子1+例子2(isinstance)+例子3(issubclass)+例子4(变量继承)+相关概念:继承+定义+可复用

学习笔记
开发工具:Spyder



文章目录

  • ​​继承​​
  • ​​例子1​​
  • ​​例子2(isinstance)​​
  • ​​例子3(issubclass)​​
  • ​​举个例子4(变量继承)​​
  • ​​相关概念​​


继承

  • 定义

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

  • 优缺点

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

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

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

Python面向对象继承的第三部分有哪些关键点?

  • 作用

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

  • 多继承

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

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

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

结果:

举个例子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)

结果:

内存图:

相关概念

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