假设我有一对相互引用的实例。有没有比下面更好的方式来构建这种关系。你知道吗
class Human():
def __init__(self, name):
self.name = name
self.pet = Dog('Sparky', self)
def pet(self, animal):
self.pet.receive_petting()
class Dog(Pet):
def __init__(self, name, owner):
self.name = name
self.owner = owner
def receive_petting(self):
pass
def bark_at(self, person):
"do something"
我不喜欢的是,这种关系需要在两个地方具体说明。你知道怎么做这个烘干机吗?你知道吗
这里没有真正特定于Python的东西;这只是基于构造函数的依赖注入的一个限制。很难将引用注入到另一个尚未创建的对象。相反,您可以创建一个对象,该对象包含对某个对象的引用,而将包含对另一个对象的引用。例如,您可以将一个函数传递给能够返回值的构造函数:
然后你可以这样使用它:
当然,要更新它以便property函数缓存值并不难。例如:
我将在
Human
上创建一个方法,允许您添加宠物(因为人类可能有许多宠物):可按如下方式使用
当然,这种方法也可以只用于一只宠物,也可以扩展到允许宠物归许多人所有。你知道吗
我会把它分成三类:
现在,一个主人也可以养很多狗,我们只需要定义尽可能多的
OwnerPetRelation
同样,一条狗现在也可以属于多个主人。你知道吗
相关问题 更多 >
编程相关推荐