Python3如何从现有的抽象类定义抽象子类?

2024-10-01 15:28:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我最初定义了以下抽象类:

from abc import ABC, abstractmethod    
class Primitive(ABC):

现在我想创建另一个从Primitive继承的抽象类:

^{pr2}$

我需要这个类是抽象的,因为我最终想要创建以下两个具体类:

class CurrencyInstrumentName(InstrumentName)
class MetalInstrumentName(InstrumentName)

我已经阅读了文档并进行了搜索,但它们主要涉及从抽象类中分离具体类,或者讨论Python如何处理抽象


Tags: from文档import定义抽象类classabcprimitive
1条回答
网友
1楼 · 发布于 2024-10-01 15:28:05

只是子类,你不需要做任何特殊的事情。

只有在实现中不再有abstractmethodabstractproperty对象时,类才会变得具体。

让我们来说明一下:

from abc import ABC, abstractmethod    
class Primitive(ABC):
    @abstractmethod
    def foo(self):
        pass

    @abstractmethod
    def bar(self):
        pass

class InstrumentName(Primitive):
    def foo(self):
        return 'Foo implementation'

在这里,InstrumentName仍然是抽象的,因为bar是一个abstractmethod。无法创建该子类的实例:

^{pr2}$

子类还可以根据需要添加@abstractmethod@abstractproperty方法。

在幕后,所有子类都继承了强制执行此操作的ABCMeta元类,它只检查类上是否还有@abstractmethod或{}属性。

相关问题 更多 >

    热门问题