我目前正在开发一个 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方法,因为它是在父类中定义的。我的继承设置中是否遗漏了某些内容,或者是否存在范围问题?
我尝试过的:
您的代码是正确的,并且由于父类的
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())