Skip to main content
 首页 » 编程设计

python之Python 中的继承

2025年05月04日9shangdawei

我在理解 Python 中的继承时遇到了一些困难。我的印象是,当 Class B 继承自 Class A 时,它继承了 A 中初始化的所有值。我编写了一个示例来演示我的内容意思是:

Class A(): 
    def __init__(self,parameter): 
        self.initialize_parameter=4*parameter 
 
Class B(A): 
    def __init__(self): 
        pass 
 
    def function(self,another_parameter): 
        return self.initialize_parameter*another_parameter 

但在这种情况下,调用:

B_instance=B() 
print B_instance.function(10) 

返回一个 AttributeError 表示类 B 没有 self.initialized_pa​​rameter

所以我的问题是,我是否必须手动将所有初始化从 A 复制并粘贴到 B,或者是否有一种方法可以在 B 中使用它们而不调用 A 类本身? (我希望这很清楚)。

请您参考如下方法:

如果您想在父类(super class)的构造函数中使用该行为,您不应该覆盖它:

Class B(A): 
  def function(self,another_parameter): 
    return self.initialize_parameter*another_parameter 

或者,如果您想扩展初始化行为,您可以使用 super()

Class B(A): 
  def __init__(self, parameter) 
    super(B, self).__init__(2*parameter) 
 
  def function(self,another_parameter): 
    return self.initialize_parameter*another_parameter 

在 Python 3 中,super() 不需要显式参数 (super().__init__())。

这种通用的覆盖行为和 super() 适用于所有方法,而不仅仅是构造函数。