Python报错TypeError:无法实例化含抽象方法的抽象类Person,原因何在?
为什么Python会抛出TypeError: Can't instantiate abstract class Person with abstract method introduce_yourself?
问题原因
- 你定义的
Person类继承自ABC(抽象基类),并且包含了被@abstractmethod装饰的introduce_yourself方法。 - 抽象类的本质是作为模板类存在,它要求所有子类必须实现其标记为抽象的方法,而抽象类本身不允许被直接实例化。
- 你直接执行
adam = Person('Adam')尝试创建抽象类的实例,这违反了抽象类的设计规则,因此Python抛出该错误。
修复方案
创建Person的子类,在子类中实现introduce_yourself抽象方法,之后实例化子类即可:
from abc import ABC, abstractmethod class Person(ABC): def __init__(self, name) -> None: self.name = name @abstractmethod def introduce_yourself(self): pass # 定义子类并实现抽象方法 class Student(Person): def introduce_yourself(self): print(f"Hi, I'm {self.name}") # 实例化子类 adam = Student('Adam') adam.introduce_yourself() # 输出: Hi, I'm Adam
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

