python - Python 中的枚举 : isInstance error

标签 python enums

这段代码有什么问题,实现是否正确?

from enum import Enum

class Test(object):
    Filters = Enum('Filters', 'A B C')  
    def __init__(self):
        pass

    def aaa(self, filters):
        if(isinstance(filters, self.Filters.B)):
            print 'OK'
        else:
            print 'NOT OK'
if __name__ == '__main__':
    Test().aaa(Test.Filters.B)

错误是:

Traceback (most recent call last):
  File "test.py", line 14, in <module>
    Test().aaa(Test.Filters.B)
  File "test.py", line 9, in aaa
    if(isinstance(filters, Test.Filters.B)):
TypeError: isinstance() arg 2 must be a type or tuple of types

最佳答案

如果您想知道 filters 参数是否是 Test.Filters 枚举的成员,您有三种选择

  • isinstance(filters, Test.Filters)
  • self.Filters 中的过滤器

(Testself 可以互换。)

如果您想知道 filters 参数是否为 Test.Filters.B,那么可以进行简单的比较:

filters is self.Filters.B

关于python - Python 中的枚举 : isInstance error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35503404/

相关文章:

python - 在文本文件中查找所有出现的模式

python - 继承时如何判断哪个Python类提供属性

vb.net - 枚举类型实现位于类实现内部还是外部

php - MySQL 表关联

python - argparse.ArgumentParser 因缺少所需参数而引发什么类型的错误

python - BLAS/LAPACK 未安装 : How to install it?

python - Vim 中的 Omnicomplete 可以为 python/3 完成函数名称还是只是方法?

java - 枚举是如何在 Java 中实现的?

swift - 枚举 if-else 比较

java - 使用字符串数组声明 java 枚举