Python LooseVersion 损坏列表

Python LooseVersion corrupt list

我对以下导致在 python 2.7.10 中执行失败的情况感到困惑:

from distutils.version import LooseVersion

class A(object):
    def __init__(self, field1):
        self.field1 = field1

a_instance = A('A')
version_tag = LooseVersion('5.0.0')

test1 = ['a', 1, [2,3,4], version_tag, a_instance]

print 1 in test1                        # True

print a_instance in test1               # AttributeError: 'A' object has no attribute 'version'

print test1.__contains__(a_instance)    # AttributeError: 'A' object has no attribute 'version'

然而这有效:

test1 = ['a', 1, [2,3,4], a_instance, version_tag]

print 1 in test1                        # True

print a_instance in test1               # True

print test1.__contains__(a_instance)    # True

我知道如何解决我这边的问题,但我不明白为什么 LooseVersion 会影响 "contain" 测试。谁能解释一下?

(顺便说一句,StrictVersion也是如此)

问题可以缩小到

a_instance == version_tag

__contains__ 必须比较每个元素,直到找到匹配项)

不幸的是 LooseVersion 无法与其他对象进行比较。