在python中,可以实例化抽象类吗?

问题描述

from abc import ABC,abstractmethod

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

我的理解是,当 Example 继承 AbstractClass ABC 时,它变成了 class一个 AbstractClass 不能被实例化,但是 以下代码执行没有错误

example = Example()

解决方法

您的类确实变得抽象了,尽管其中包含的方法/方法(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