我在python中编写蛇编码以进行练习。因此,我必须上课:Field()
而且Snake()
我必须从Snake
inField
以及其他方面获取属性。
我这样做
if __name__ == "__main__":
snake=Snake()
field=Field(snake)
snake.field = field
在字段中使用__ init __:
def __init__(self, snake):
self.snake = snake
这是这样做的“正确”方法,还是有更好或更普遍的方法?
如果两个类必须相互引用,那么可以通过以下一种更好的方法来确保:
class Snake:
def set_field(self, field):
self.field = field
class Field:
def __init__(self, snake):
self.snake = snake
snake.set_field(self)
snake = Snake()
field = Field(snake)
您现在不再需要显式地编码,snake.field = field
因为现在当您使用Field
对象的实例构造Snake
对象时,Field
构造函数将确保Snake
使用返回该Field
对象的引用来初始化该对象。问题的关键是必要的初始化代码应放置在构造函数,即__init__
方法,以及因为有之间的关系Field
,并Snake
认为是双向的,使它在代码中明确。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句