[英]Using isinstance() to check class variable's belonging
我想使用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
Enum
在Python 3.4中成为官方数据类型,并且这里有一个backport,这里是 docs 。
isinstance()
可以根据需要工作,并且可以使用以下成员的名称:
myEnum.__members__.keys()
虽然MyEnum['MyConstantA']
和MyEnum(0)
都将返回MyEnum.MyConstantA
成员。
普通字典似乎可以满足您的要求:
>>> myEnum = {'MyConstantA': 0, 'MyConstantB': 1}
或者让我们enumerate
计数:
>>> myEnum = {k: i for i, k in enumerate(['MyConstantA', 'MyConstantB'])}
然后:
>>> myEnum.keys()
['MyConstantA', 'MyConstantB']
>>> myEnum.values()
[0, 1]
>>> myEnum.items()
[('MyConstantA', 0), ('MyConstantB', 1)]
>>> 'MyConstantB' in myEnum
True
如果您确实想编写自己的类,请使用hasattr
测试类变量的存在:
>>> class Foo:
... bar = 5
...
>>> hasattr(Foo, 'bar')
True
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.