首页 > 解决方案 > 在python中,可以实例化一个抽象类吗?

问题描述

from abc import ABC, abstractmethod

class Example(ABC):
    def smile(self):
        print("smile")

我的理解是,ExampleAbstractClass它继承ABC class. AbstractClass无法实例化,但以下代码执行没有错误

example = Example()

标签: pythoninheritanceabstract-classabstractabc

解决方案


尽管包含在内部(即smile)的方法/方法是具体的,但您的类确实变得抽象。您需要使用装饰器将方法抽象化@abc.abstractclass。因此,如果您将代码重写为:

from abc import ABC, abstractmethod

class Example(ABC):
    @abstractmethod
    def smile(self):
        print("smile")
        
e = Example()

那么你会得到错误:

TypeError: Can't instantiate abstract class Example with abstract methods smile

推荐阅读