微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python中@abstractmethod函数前加@property的用法

如何解决Python中@abstractmethod函数前加@property的用法

在抽象基类的设计中,我可以找到以下场景。为抽象基类中的方法添加@property 的设计考虑是什么。当我实现相关函数时,例如这里的 _obj.name,与实现没有 f1 装饰器的 f1 相比有什么区别吗?

@property

解决方法

这将是一个抽象属性。 From docs

内置 property() 的子类,表示抽象属性。

不推荐使用这种特殊情况,因为 property() 装饰器现在在应用于抽象方法时被正确标识为抽象:

class C(ABC):
    @property
    @abstractmethod
    def my_abstract_property(self):
        ...

这将允许您执行以下操作:

class CD(C):
    def my_abstract_property(self):
        return 1

cd = CD()
print(cd.my_abstract_property)
# Outputs 1

但是,如果您一开始只有一个 @abstractmethod 装饰器,例如

class C(ABC):
    @abstractmethod
    def my_abstract_property(self):
        ...

你必须这样做

class CD(C):
    def my_abstract_property(self):
        return 1

cd = CD()
#                            vv
print(cd.my_abstract_property())
# Outputs 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。