如何将 getter 和 setter 添加到枚举变量?

马修雷诺德菲特

我有一个小的(为了这个问题而简化)类,例如:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将getter和setter添加到PropertyDeclarationSyntax?

来自分类Dev

使用 getter 和 setter 方法将列表添加到 bean 属性之间的区别?

来自分类Dev

如何创建getter和setter

来自分类Dev

如何枚举/发现JavaScript中的getter和setter?

来自分类Dev

使用 getter/setter 将元素添加到列表

来自分类Dev

如何为指针类变量做setter和getter函数?

来自分类Dev

Getter-Setter和私有变量

来自分类Dev

Python中成员变量的Getter和Setter

来自分类Dev

如何创建getter和setter覆盖?

来自分类Dev

如何找到相应的setter和getter?

来自分类Dev

如何自动生成getter和setter方法

来自分类Dev

我如何获得@getter和@setter?

来自分类Dev

如何创建getter和setter覆盖?

来自分类Dev

Getter和Setter函数帮助以及如何

来自分类Dev

js如何区分getter和setter

来自分类Dev

JavaScript getter和setter

来自分类Dev

PHP的getter和setter

来自分类Dev

PHP的getter和setter

来自分类Dev

getter,setter和loops

来自分类Dev

Getter 和 Setter 方法

来自分类Dev

谁能告诉我如何将getter和setter放在下面的代码上,以及getter和setter的作用是什么

来自分类Dev

自动将getter和setter应用于新的对象变量

来自分类Dev

如何同时使用String和int实现setter和getter?

来自分类Dev

枚举器 C++ 的 setter 和 getter 方法

来自分类Dev

如何在Android中使用setter和getter存储全局变量?

来自分类Dev

getter 和 setter 无法将值设置为 firestore

来自分类Dev

Swift的setter和getter问题

来自分类Dev

Getter和Setter与Oject键值对

来自分类Dev

Haskell,镜头,Getter和Setter