isinstance的以下用法在Python2.5.2或2.6.2中似乎不起作用:
class BananaCake:
def __init__(self):
print 'Banana Cake'
class ChocolateCake:
def __init__(self):
print 'Chocolate Cake'
class CakeFactory:
@staticmethod
def create(name):
if name == 'banana':
return BananaCake
elif name == 'chocolate':
return ChocolateCake
else:
return None
if __name__ == '__main__':
banana_cake = CakeFactory.create('banana')
print isinstance(banana_cake, BananaCake)上面的isinstance返回False,即使banana_cake是BananaCake的一个实例。有人知道我可能会错过什么吗?我在我的测试脚本中执行这个检查。您应该能够复制和粘贴上面的代码,并在Python脚本中轻松运行它。
发布于 2009-10-05 18:35:50
这是因为'banana_cake‘不是BananaCake的实例。
CakeFactory实现返回BananaCake类,而不是BananaCake的实例。
尝试修改CakeFactory以返回"BananaCake()“。调用BananCake构造函数将返回一个实例,而不是类。
https://stackoverflow.com/questions/1521655
复制相似问题