我有一个小班(为了这个问题而简化),例如:
class ShortStatus1:
class Shutter(Enum):
CLOSED = '0', ErrorType.NONE
OPEN = '1', ErrorType.NONE
def __init__(self):
self.shutter = ShortStatus1.Shutter.OPEN如果可能的话,我想在变量本身中添加一个getter和setter,例如:
sh = ToTLMShort()
sh.shutter.set(ShortStatus1.Shutter.CLOSED)
print(sh.shutter.get())会打印Shutter.CLOSED
我遇到的问题是,我不明白如何以这种方式将self.shutter包含在getter和setter中(如果可能的话,我希望避免使用sh.set_shutter(ShortStatus1.Shutter.CLOSED)签名)。
setter很重要,因为它使我有可能确保给定的变量是正确的类型,并避免用户错误(代码将被许多具有非常不同专业水平的人使用)。
是否有一种简单的方法来做到这一点,或者我是否需要添加一个额外的类来封装变量?
发布于 2019-07-25 09:53:29
您可以在@property类属性前面使用_装饰符和_:
def __init__(self):
self._shutter = ShortStatus1.Shutter.OPEN
@property
def shutter(self):
return self._shutter
@shutter.setter
def shutter(self, value):
self._shutter = value那么,如果你这样做:
if __name__ == '__main__':
a = ShortStatus1()
print(a.shutter)
a.shutter = ShortStatus1.Shutter.CLOSED
print(a.shutter)输出:
Shutter.OPEN
Shutter.CLOSEDhttps://stackoverflow.com/questions/57198840
复制相似问题