後,這裏有兩個文件,foo.py和bar.py bar.py有...Python中,檢查對象的類型圓形進口
from foo import *
...頂部。 bar.py使用n foo定義的類型。
從foo導入bar.py時,我無法確定對象的類型。 看下面的例子,爲什麼對isinstance的調用返回False? 如何檢查這些類型是否相同?
感謝,
〜埃裏克
===== foo.py =====
#!/usr/bin/env python
class Spam(object):
def __init__(self, x):
self.x = x
def funcA(self):
print 'function a'
def __str__(self):
return 'Spam object %s' % repr(self.x)
class Eggs(object):
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def funcB(self):
print 'function b'
def __str__(self):
return "Eggs object (%s, %s, %s)" % (repr(self.x), repr(self.y), repr(self.z))
def main(fname):
if not fname.endswith('.py'):
raise Exception("Must be a .py file")
module = __import__(fname[:-3])
for item in module.DATA:
if isinstance(item, Spam):
item.funcA()
elif isinstance(item, Eggs):
item.funcB()
print item
if __name__ == '__main__':
import sys
for fname in sys.argv[1:]:
main(fname)
sys.exit(0)
===== bar.py =====
from foo import *
DATA=[
Spam("hi"),
Spam("there"),
Eggs(1, 2, 3),
]
你能展示你如何調用這個程序,它的輸出是什麼? –