如何解决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 举报,一经查实,本站将立刻删除。