alv*_*vas 0 python enums class class-method
我有一个 mixin str+Enum 类,它允许我的代码的其他部分访问我的变量状态的字符串表示。
有一个特定的 Enumcitrus类型可以来自所有可能枚举的子集。目前我正在使用 aclassmethod来检查“柑橘性”,例如:
from enum import Enum
class Fruits(str, Enum):
apple = "apple"
banana = "banana"
orange = "orange"
lemon = "lemon"
citrus = {orange, lemon}
@classmethod
def is_citrus(cls, state):
return state in cls.citrus
Run Code Online (Sandbox Code Playgroud)
[用法]:
>>> o = Fruits.orange
>>> Fruits.is_citrus(o)
True
Run Code Online (Sandbox Code Playgroud)
我的问题是:
Fruits.is_citrus方法来检查oEnum 对象,如何Fruit更改该类以便我可以执行类似的操作o.is_citrus()?使它成为一个普通的实例方法:
class Fruits(str, Enum):
apple = "apple"
banana = "banana"
orange = "orange"
lemon = "lemon"
citrus = {orange, lemon}
def is_citrus(self):
return self in self.citrus
Run Code Online (Sandbox Code Playgroud)
我并不肯定citrus = {orange, lemon}它完全按照你的想法去做(它最终是一个集合的字符串表示而不是一个实际的集合)——而不是citrus它自己的枚举值,我会实现“柑橘”的概念—— ness”仅在 内is_citrus,像这样:
def is_citrus(self):
return self in {Fruits.orange, Fruits.lemon}
Run Code Online (Sandbox Code Playgroud)