1,我首先使用Python 2.7版,并通过pip安装了enum
模块。
from enum import Enum
class Format(Enum):
json = 0
other = 1
@staticmethod
def exist(ele):
if Format.__members__.has_key(ele):
return True
return False
class Weather(Enum):
good = 0
bad = 1
@staticmethod
def exist(ele):
if Weather.__members__.has_key(ele):
return True
return False
Format.exist('json')
哪种方法效果很好,但我想改进代码。
2,所以我认为更好的方式可能是这样的:
from enum import Enum
class BEnum(Enum):
@staticmethod
def exist(ele):
if BEnum.__members__.has_key(ele)
return True
return False
class Format(Enum):
json = 0
other = 1
class Weather(Enum):
good = 0
bad = 1
Format.exist('json')
但是这会导致错误,因为BEnum.__members__
是一个类变量。
我怎样才能让它发挥作用?
答案 0 :(得分:3)
这里有三件事你需要做。首先,您需要BEnum
继承Enum
:
class BEnum(Enum):
接下来,您需要使BEnum.exist
成为一种类方法:
@classmethod
def exist(cls,ele):
return cls.__members__.has_key(ele)
最后,您需要从Format
继承Weather
和BEnum
:
class Format(BEnum):
class Weather(BEnum):
exist
是一个静态方法,它只能在特定的类上运行,无论它是从哪个类调用。通过使它成为一个类方法,它被调用的类自动作为第一个参数(cls
)传递,并可用于成员访问。
Here是关于静态方法和类方法之间差异的一个很好的描述。