将自己传递给python中的构造函数

时间:2010-10-15 20:35:02

标签: python this self

我最近正在研究一个小python项目,并且遇到了我想将self传递给另一个对象的构造函数的情况。我不知道为什么,但我不得不查看这是否在python中是合法的。我已经用C ++和Java多次完成了这个,但我不记得曾经用python做过这个。

是否将对self的引用传递给新对象,而不是 pythonic ?我不认为我已经看到任何python程序显式传递自我引用。我到现在才恰好没有需要吗?还是我在和蟒蛇风格打架?

2 个答案:

答案 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