将两个对象传递给对方?
问题描述:
我怎样才能让两个物体相互通过?将两个对象传递给对方?
例如:
player = Player(obstacle)
obstacle = Obstacle(player)
如果我这样做,它会说
Unresolved reference "obstacle"
而且我也明白为什么,但它仍然可能通过在player
obstacle
?
答
您不能通过obstacle
到player
,因为在开始时没有obstacle
s。您应该创建一个空的player
,创建一个obstacle
并指定obstacle
到player
:
player = Player()
obstacle = Obstacle(player)
player.obstacle = obstacle
请注意,这将创建一个参考回路这是垃圾收集清理有问题的。考虑使用weak references来创建相互引用的对象。
您需要了解更多关于类型的信息。只是给一个函数带来障碍并返回一个玩家和一个接受玩家并且返回一个障碍而没有别的东西的函数,这是不可能的 - 但是也许你可以先创建一个,然后在它们都创建完成后关联它们,如果类允许它。 – Ryan
你可以给更多的上下文。还有另一种方法。 – MSeifert
@ MSeifert和Ryan是对的。需要更多的上下文。 _为什么'Player()'需要一个障碍物的引用,_why_'Obstacle()'需要一个参考给玩家?你能否提供一个[MCVE](https://*.com/helpa/mcve)来演示你的_entire_问题? –