@property和@abstractmethod与@abstractmethod相比,它们是超级类-有什么区别? Python 3

如果我想确保子类中有某种方法,则可以在超类中实现一个接口。为此,我将使用模块abc并使我的超类继承自abc.ABC。然后,我将使用@abstractmethod装饰器来确保某些方法必须在我的子类中被覆盖。

在这一点上,我想确保其中一种方法必须是属性。我尝试使用两个装饰器来实现这一点,但发现在子类中重写此特定超类方法时没有区别。

所以我的问题是:之间有什么区别

import abc


class superclass1(abc.ABC):
    @property
    @abc.abstractmethod
    def foo(self):
        pass


class subclass1(superclass1):
    def foo(self):
        return "bar"


class superclass2(abc.ABC):
    @abc.abstractmethod
    def foo(self):
        pass


class subclass2(superclass2):
    def foo(self):
        return "bar"


class superclass3(abc.ABC):
    @property
    @abc.abstractmethod
    def foo(self):
        pass


class subclass3(superclass3):
    @property
    def foo(self):
        return "bar"


class superclass4(abc.ABC):
    @abc.abstractmethod
    def foo(self):
        pass


class subclass4(superclass4):
    @property
    def foo(self):
        return "bar"
hui3636 回答:@property和@abstractmethod与@abstractmethod相比,它们是超级类-有什么区别? Python 3

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2702828.html

大家都在问