我有一个小的(为了这个问题而简化)类,例如:
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 很重要,因为它让我可以确保给定的变量是正确的类型并避免用户错误(该代码将被许多具有不同专业知识水平的人使用)
有没有一种简单的方法可以这样做,或者我是否需要添加一个额外的类来封装变量?
您可以在类属性前使用@property
装饰器和:_
shutter
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.CLOSED
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句