Python 中的继承问题 - 无法访问父类方法

问题描述 投票:0回答:1

我目前正在开发一个 Python 项目,在该项目中我使用继承来创建基类和派生类。但是,当我尝试从子类中的父类访问方法时遇到问题。

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

    def greet(self):
        return f"Hello, {self.name}!"

class MyDerivedClass(MyBaseClass):
def __init__(self, name, age):
super().__init__(name)
self.age = age

    def display_info(self):
        # Problematic line
        greeting = self.greet()  # This results in an AttributeError
    
        return f"{greeting} I am {self.age} years old."

obj = MyDerivedClass("John", 25)
print(obj.display_info())

问题:

尝试从

MyBaseClass
display_info
方法中从
MyDerivedClass
调用greet 方法时会出现问题。该代码会引发
AttributeError
表明该方法不存在。

我希望子类可以访问greet方法,因为它是在父类中定义的。我的继承设置中是否遗漏了某些内容,或者是否存在范围问题?

我尝试过的:

  1. 确保在子类构造函数中使用 super() 正确初始化父类 (MyBaseClass)。
python-3.x python-2.7 inheritance methods constructor
1个回答
0
投票

您的代码是正确的,并且由于父类的

super()
构造函数,您可以访问父类方法。但您的格式和缩进可能会导致此错误。您可以通过以下方式修复:

class MyBaseClass:
   def __init__(self, name):
      self.name = name
   def greet(self):
      return f"Hello, {self.name}!"

class MyDerivedClass(MyBaseClass):
   def __init__(self, name, age):
      super().__init__(name)
      self.age = age

   def display_info(self):
      greeting = self.greet()

      return f"{greeting} I am {self.age} years old."

obj = MyDerivedClass("John", 25)
print(obj.display_info())
© www.soinside.com 2019 - 2024. All rights reserved.