我最近正在研究一个小python项目,并且遇到了我想将self
传递给另一个对象的构造函数的情况。我不知道为什么,但我不得不查看这是否在python中是合法的。我已经用C ++和Java多次完成了这个,但我不记得曾经用python做过这个。
是否将对self
的引用传递给新对象,而不是 pythonic ?我不认为我已经看到任何python程序显式传递自我引用。我到现在才恰好没有需要吗?还是我在和蟒蛇风格打架?
答案 0 :(得分:14)
是的,这是合法的,是的,它是pythonic。
当你有一个对象和一个容器对象时,我发现自己使用这个模式,其中包含的对象需要知道它们的父对象。
答案 1 :(得分:3)
只需将其传递给参数即可。当然,在其他初始值设定项中不会将其称为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