考虑你有两个如下定义的python文件.假设一个是通用包(class2),另一个执行特定覆盖并充当可执行文件(class1).
class1.py:
#!/usr/bin/python
class Test(object):
pass
class Verificator():
def check(self, myObject):
if not isinstance( myObject, Test ):
print "%s is no instance of %s" % (type(myObject),Test)
else:
print "OK!"
if __name__ == '__main__':
from class2 import getTest
v = Verificator()
t = Test()
v.check(t)
s = getTest()
v.check(s)
Run Code Online (Sandbox Code Playgroud)
class2.py:
from class1 import Test
def getTest():
return Test()
Run Code Online (Sandbox Code Playgroud)
会发生的事情是第一次检查没问题,第二次检查失败.其原因是,t是__main__.Test,而s是class1.Test和v.check()支票__main__.Test,但在一天结束的时候它是同一类的吧?
有没有办法写v.check()这样的,它也接受class1.Test对象,或任何其他方式来解决这个问题?