2

这个问题是关于类型比较,而不是 python 对象。更准确地说,为什么在__main__module 中定义的类型与由importlib.import_module(). 请注意,test2()如果所有类型都由importlib.import_module().

给定一个名为m.py的模块:

class A(object):
    pass

class B(A):
    pass

def test1():
    # pass
    assert issubclass(B, A)

    # prepare test with imported module
    from importlib import import_module
    m = import_module('m')

    # pass
    assert issubclass(m.B, m.A)

    # fail
    assert issubclass(m.B, A)

    # fail
    assert m.A is A
    assert m.B is B

def test2():
    from importlib import import_module
    m0 = import_module('m')
    m1 = import_module('m')
    assert m0.A is m1.A
    assert m0.B is m1.B
    assert issubclass(m0.B, m1.A)

if __name__ == '__main__':
    import sys
    if len(sys.argv) == 2:
        if sys.argv[1] == 'test1':
            test1()
        if sys.argv[1] == 'test2':
            test2()

为什么python m.py test1失败,为什么python m.py test2没有?(用 py2.7.x 和 py3.4.x 测试)

4

0 回答 0