【发布时间】:2015-12-26 17:33:53
【问题描述】:
我想使用 isinstance() 方法来识别类变量是否属于给定的类。
我创建了一个自己的 Enum() 基类来列出子类的类变量。 我没有详细说明源代码主体,不重要。
class Enum(object):
@classmethod
def keys(cls):
pass # Returns all names of class varables.
@classmethod
def values(cls):
pass # Returns all values of class varables
@classmethod
def items(cls):
pass # Returns all class variable and its value pairs.
class MyEnum(Enum):
MyConstantA = 0
MyConstantB = 1
>>>MyEnum.keys()
['MyConstantA', 'MyConstantB']
我想用这个:
>>>isinstance(MyEnum.MyConstantB, MyEnum)
True
【问题讨论】:
-
Python 已经有了枚举,为什么要为此编写自己的类?
-
Python 3.4 有枚举。其他版本可以使用enum34的端口。
-
这种貌似要重新实现一个字典。
-
如果你不关心如何检查一个类是否有某个属性,这个问题可能对你有帮助:stackoverflow.com/questions/9748678/…
-
@jonrsharpe 不正确。可以用元类来完成,例如枚举的python实现就是这样设计的。