BiA*_*BiA 9 python oop class python-3.4
我想使用枚举来表示类的内部状态:
#!/usr/bin/python3
from enum import Enum
class testClass:
class Color(Enum):
red = 1
blue = 2
green = 3
def __init__(self):
self.value = 0
def setValue(self, Color):
self.value = Color
Run Code Online (Sandbox Code Playgroud)
这就是我认为可能的实施方案。我看到的两件烦人的事情是:
要设置value
我必须做:
q = testClass()
q.setValue(q.Color.red)
我觉得这q.Color.red
有点令人不快,我宁愿有类似的东西:Color.red
或者只是red
。也许唯一的方法是使用一些字符串比较,但这正是我试图避免使用枚举的。
我得到了一个额外的方法,q.Color.mro
它看起来像是枚举类的内部方法。这个是来做什么的?
Rob*_*obᵩ 10
替代方案#1:您可以让该类Enum
为您进行字符串查找:
def setValue(self, color):
self.value = self.Color[color]
Run Code Online (Sandbox Code Playgroud)
用法:
q = testClass()
q.setValue('red')
Run Code Online (Sandbox Code Playgroud)
参考:
替代方案#2:如果没有冲突,您可以将 Enum 的成员提升到父类:
class testClass:
class Color(Enum):
red = 1
blue = 2
green = 3
red = Color.red
blue = Color.blue
green = Color.green
def setValue(self, color):
self.value = color
Run Code Online (Sandbox Code Playgroud)
用法:
q = testClass()
q.setValue(q.red)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14027 次 |
最近记录: |