【发布时间】:2014-08-06 15:06:38
【问题描述】:
我将学习抽象工厂模式并编写一些代码进行测试。
有一个 DogFactory 和一个 CatFactory,我想用一个 PetFactory 来返回一个宠物。
但是得到一个错误 TypeError:必须使用 DogFactory 实例作为第一个参数调用未绑定的方法 get_pet()(什么都没有) 脚本是:
import random
class PetShop(object):
"""A Pet Shop"""
def __init__(self, animal_factory=None):
self.pet_factory = animal_factory
def get_pet(self):
return self.pet_factory.get_pet()
def get_food(self):
return self.pet_factory.get_food()
class Dog(object):
def speak(self):
return "woof"
def __str__(self):
return "Dog"
class Cat(object):
def speak(self):
return "meow"
def __str__(self):
return "Cat"
class DogFactory(object):
"""Create a Dog"""
def get_pet(self):
return Dog()
def get_food(self):
return "dog food"
class CatFactory(object):
"""Create a Cat"""
def get_pet(self):
return Cat()
def get_food(self):
return "Cat food"
def main():
factory = random.choice([DogFactory, CatFactory])
petshop = PetShop(factory)
print petshop.get_pet()
if __name__ == "__main__":
main()
我搜索了一些类似的问题,但不知道,如果你能给我解释一下,那就太好了。
谢谢大家。
【问题讨论】:
标签: python