在枚举类中声明一个静态变量

法法罗

我有一个颜色的枚举。我希望在枚举类中添加一个辅助方法“ toRGB()”,该类将枚举的实例转换为RGB对象。作为一种优化,我希望一次将字典创建为静态变量。但是,正确的语法似乎使我难以理解。

有人可以建议正确的方法吗?

from enum import Enum

class RGB:
    def __init__(self, r, g, b):
        pass

class Color(Enum):
    RED = 0
    GREEN = 1

    __tbl = {
              RED:   RGB(1, 0, 0),
              GREEN: RGB(0, 1, 0)
            }

    def toRGB(self):
        return self.__class__.__tbl[self.value]

c = Color.RED
print(c.toRGB())

我收到以下错误:

Traceback (most recent call last):
  File "C:/Users/user/Desktop/test.py", line 20, in <module>
    print(c.toRGB())
  File "C:/Users/user/Desktop/test.py", line 17, in toRGB
    return self.__class__.__tbl[self.value]
TypeError: 'Color' object does not support indexing
虚假的

非方法属性成为枚举成员(甚至tbl)。您可以改用关键字参数:

class Color(Enum):
    RED = 0
    GREEN = 1

    def toRGB(self, tbl={
        RED:   RGB(1, 0, 0),
        GREEN: RGB(0, 1, 0)
    }):
        return tbl[self.value]

另外,您可以在创建类后定义属性:

class Color(Enum):
    RED = 0
    GREEN = 1

    def toRGB(self):
        return self._tbl[self]

Color._tbl = {
    Color.RED:   RGB(1, 0, 0),
    Color.GREEN: RGB(0, 1, 0)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用或调用在另一个类中声明的静态变量

来自分类Dev

在声明之前分配一个静态变量

来自分类Dev

必须在C#Winfoms中声明一个静态变量

来自分类Dev

如果我只有一个静态变量的类-我应该将该类声明为静态的吗?

来自分类Dev

从另一个类访问静态变量

来自分类Dev

从另一个类访问静态变量

来自分类Dev

从另一个类更新静态变量

来自分类Dev

如何在另一个类中设置静态变量?

来自分类Dev

java无法从同一个类中获取静态变量的值

来自分类Dev

如何在另一个类的静态成员函数中访问私有静态变量?

来自分类Dev

声明一个静态变量,该变量将被许多WebMethod函数使用

来自分类Dev

声明一个静态变量,该变量将被许多WebMethod函数使用

来自分类Dev

如何从另一个类的静态方法更改静态变量的值

来自分类Dev

如何从另一个类的静态方法更改静态变量的值

来自分类Dev

将静态变量全局声明为null是一个好习惯吗?

来自分类Dev

如何声明另一个类中的枚举?

来自分类Dev

如何在python中打印类的声明静态变量

来自分类Dev

从React-Native应用程序中的另一个类访问静态变量?

来自分类Dev

从React-Native应用程序中的另一个类访问静态变量?

来自分类Dev

在JavaScript类中声明一个公共的“静态”函数

来自分类Dev

静态变量与模板类的声明冲突

来自分类Dev

让类方法为每个实例保存一个不同的静态变量

来自分类Dev

java - 是否可以加入并设置为另一个类的静态变量

来自分类Dev

斯威夫特:如何声明一个静态成员变量是一个类

来自分类Dev

在main()中,如何从另一个函数中的静态变量获取值?

来自分类Dev

一个静态变量以限制进程数

来自分类Dev

有一个称为参数的静态变量

来自分类Dev

在 Android Studio 的一个类中声明多个变量

来自分类Dev

在Haskell的递归过程中创建一个静态变量

Related 相关文章

  1. 1

    如何使用或调用在另一个类中声明的静态变量

  2. 2

    在声明之前分配一个静态变量

  3. 3

    必须在C#Winfoms中声明一个静态变量

  4. 4

    如果我只有一个静态变量的类-我应该将该类声明为静态的吗?

  5. 5

    从另一个类访问静态变量

  6. 6

    从另一个类访问静态变量

  7. 7

    从另一个类更新静态变量

  8. 8

    如何在另一个类中设置静态变量?

  9. 9

    java无法从同一个类中获取静态变量的值

  10. 10

    如何在另一个类的静态成员函数中访问私有静态变量?

  11. 11

    声明一个静态变量,该变量将被许多WebMethod函数使用

  12. 12

    声明一个静态变量,该变量将被许多WebMethod函数使用

  13. 13

    如何从另一个类的静态方法更改静态变量的值

  14. 14

    如何从另一个类的静态方法更改静态变量的值

  15. 15

    将静态变量全局声明为null是一个好习惯吗?

  16. 16

    如何声明另一个类中的枚举?

  17. 17

    如何在python中打印类的声明静态变量

  18. 18

    从React-Native应用程序中的另一个类访问静态变量?

  19. 19

    从React-Native应用程序中的另一个类访问静态变量?

  20. 20

    在JavaScript类中声明一个公共的“静态”函数

  21. 21

    静态变量与模板类的声明冲突

  22. 22

    让类方法为每个实例保存一个不同的静态变量

  23. 23

    java - 是否可以加入并设置为另一个类的静态变量

  24. 24

    斯威夫特:如何声明一个静态成员变量是一个类

  25. 25

    在main()中,如何从另一个函数中的静态变量获取值?

  26. 26

    一个静态变量以限制进程数

  27. 27

    有一个称为参数的静态变量

  28. 28

    在 Android Studio 的一个类中声明多个变量

  29. 29

    在Haskell的递归过程中创建一个静态变量

热门标签

归档