
[英]How to override an abstract property method without forgetting to add the property decorator in the child class?
[英]Override property setter abstract method in child class
我第一次探索@property
装饰器和抽象类,然后跟着Python文档来定义以下类:
In [125]: from abc import ABC, abstractmethod
...: class C(ABC):
...: def __init__(self):
...: self._x = None
...: @property
...: def x(self):
...: """I'm the 'x' property"""
...: return self._x
...: @x.setter
...: @abstractmethod
...: def x(self, value):
...: self._x = value
...: @x.deleter
...: def x(self):
...: del self._x
...: class D(C):
...: pass
C类中的setter属性是一个abstractmethod
。 我知道我必须在D类中重写这个setter属性(方法)才能实例化一个对象,但我不确定如何做到这一点,因为C类中的所有方法都被命名为相同。 现在,我知道,我可以在类C中调用方法getx()
, setx()
等,并在类D中重写setx()
,但我想知道是否有办法使用上面的属性语法。
文档显示可以覆盖setter属性,如下所示:
...: class D(C):
...: @C.x.setter #override setter
...: def x(self):
...: pass
现在可以实例化子类D:
In [128]: d = D()
In [129]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.