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 无法与其他对象进行比较。
我对以下导致在 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 无法与其他对象进行比较。