Python可以多继承吗??

本文通过具体示例详细解析了Python中多继承的概念与实现方式,展示了如何利用super函数调用父类构造方法,实现代码复用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继承

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。继承完全可以理解成类之间的父与子的关系。
例子:

class prtutu:  
    def __init__(self):  
        print("prtutu")
class prtutu1:
    def __init__(self,a):
        print("prtutu1",a)
class prtutu2(prtutu1,prtutu):  
    def __init__(self,a):
        super(prtutu,self).__init__(a) 
        prtutu.__init__(self)
        print("prtutu2")
d = prtutu2("123")

代码分析

class prtutu:  
创建一个类
    def __init__(self):  
    调用构造方法
        print("prtutu")
        输出
 同上class prtutu1:
    def __init__(self,a):注意此处多了一个参数
        print("prtutu1",a)

现在我们创建了两个类

class prtutu2(prtutu1,prtutu):   
prtutu2继承了prtutu和prtutu1
    def __init__(self,a):
        super(prtutu2,self).__init__(a) 
        使用super函数找到类prtutu2 
        从左到右第一个父类,然后执行他的构造方法。
        prtutu.__init__(self)
        直接使用父类点构造方法
        print("prtutu2")
d = prtutu2("123")调用

由上面我们可以看出Python是可以多继承的

### 面向对象编程的三大特性 面向对象编程(Object-Oriented Programming, OOP)是一种以对象为核心的编程范式,其主要包含三大特性:封装、继承和多态[^4]。 #### 1. 封装 封装是将数据(属性)和行为(方法)组合成一个单元(),并通过访问控制限制对某些组件的直接访问。这种机制使得对象的内部状态对外部不可见,从而提高了代码的安全性和可维护性。在 Python 中,可以通过使用私有属性(以双下划线开头)来实现封装[^2]。 ```python class Person: def __init__(self, name, age): self.__name = name # 私有属性 self.__age = age # 私有属性 def get_name(self): return self.__name def set_name(self, name): if isinstance(name, str): self.__name = name ``` #### 2. 继承 继承描述的是事物之间的所属关系,允许一个从另一个派生。新的称为子或扩展,而被继承称为基、父或超。通过继承,子可以复用父的属性和方法,并且还可以添加新的功能或重写已有功能[^3]。 ```python class Animal: def speak(self): return "Animal speaks" class Dog(Animal): # Dog 继承自 Animal def bark(self): return "Dog barks" ``` #### 3. 多态 多态是指同一接口可以根据不同的对象表现出不同的行为。在 Python 中,多态通常通过方法重写和鸭子型(Duck Typing)实现。方法重写是指子重新定义父中的方法,而鸭子型则允许不依赖于继承关系,只要对象实现了所需的方法即可[^4]。 ```python class Bird: def fly(self): return "Bird flies" class Sparrow(Bird): def fly(self): # 方法重写 return "Sparrow flies gracefully" def make_fly(bird): return bird.fly() sparrow = Sparrow() print(make_fly(sparrow)) # 输出: Sparrow flies gracefully ``` --- ### Python 是否支持多继承 Python 支持多继承,即一个可以从多个派生。当发生多继承时,Python 使用方法解析顺序(Method Resolution Order, MRO)来决定调用哪个父的方法。MRO 的规则遵循 C3 线性化算法,确保每个父只被访问一次,并优先考虑左侧父[^1]。 ```python class A: def method(self): return "A's method" class B: def method(self): return "B's method" class C(A, B): # 多继承 pass c = C() print(c.method()) # 输出: A's method print(C.mro()) # 查看方法解析顺序 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值