在Python中将self传递给构造函数
我最近在做一个小的Python项目,遇到了一个情况,我想把self
传递给另一个对象的构造函数。我也不知道为什么,我特意查了一下这在Python中是否合法。我在C++和Java中做过很多次,但我不记得在Python中需要这样做。
把self
的引用传给新对象,这种做法算不算不够“Python风格”?我觉得我没见过有Python程序明确地传递self
的引用。难道我之前一直没有这个需求?还是说我在违背Python的风格?
2 个回答
4
只需要把它当作一个参数传递就可以了。当然,在另一个初始化器里,它不会叫做 self
...
class A:
def __init__(self, num, target):
self.num = num
self.target = target
class B:
def __init__(self, num):
self.a = A(num, self)
a = A(1)
b = B(2)
print b.a.num # prints 2
18
是的,这样做是合法的,而且在Python中也是一种很好的写法。
我发现当你有一个对象和一个包含这个对象的容器时,里面的对象需要知道它们的父对象时,我会使用这种写法。