gpt4 book ai didi

具有具体 setter/getter 的python抽象属性 setter

转载 作者:太空狗 更新时间:2023-10-30 00:24:07 26 4
gpt4 key购买 nike

是否可以使用 abc.abstractproperty 创建一个具体的 getter 但将 setter 抽象为每个继承类的不同。我为每个子类处理不同的 val 设置。

例如。

@abstractproperty
def val(self):
return self._val

@val.setter
def val(self, x):
pass

最佳答案

您将需要一点间接性。像往常一样定义 setter,但让它调用一个抽象方法来完成实际工作。然后每个子类都需要提供那个方法的定义。例如,

class Base(object):
__metaclass__ = abc.ABCMeta

def __init__(self):
self._val = 3

@property
def val(self):
return self._val

@val.setter
def val(self, x):
self._val_setter(x)

@abc.abstractmethod
def _val_setter(self, x):
pass


class Child(Base):

def _val_setter(self, x):
self._val = 2*x

然后

>>> c = Child()
>>> print c.val
3
>>> c.val = 9
>>> print c.val
18

关于具有具体 setter/getter 的python抽象属性 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35344209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com