Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“如何制作Python类”;真的吗;摘要_Python_Oop_Abstract Class_Abc - Fatal编程技术网

“如何制作Python类”;真的吗;摘要

“如何制作Python类”;真的吗;摘要,python,oop,abstract-class,abc,Python,Oop,Abstract Class,Abc,我在试验Python类是否可以抽象,我在研究时遇到了这个问题。然而,ABC似乎只要求子类使用@abstractmethod装饰器实现方法;它并不禁止直接实例化抽象类。要在代码中显示示例,请执行以下操作: from abc import ABC class Abstract(ABC): pass class Concrete(Abstract): pass if __name__ == '__main__': # should raise exception,

我在试验Python类是否可以抽象,我在研究时遇到了这个问题。然而,
ABC
似乎只要求子类使用
@abstractmethod
装饰器实现方法;它并不禁止直接实例化抽象类。要在代码中显示示例,请执行以下操作:

from abc import ABC


class Abstract(ABC):
    pass


class Concrete(Abstract):
    pass


if __name__ == '__main__':
    # should raise exception, but doesn't
    jawn = Abstract()

有没有一种方法可以干净地防止Python类的实例化,从而使其真正抽象?

可以说,抽象类是通过存在非重写的抽象方法定义的。可以说,抽象类是通过存在非重写的抽象方法定义的。