12

我最近在做一个小 Python 项目,遇到了一个我想传入self另一个对象的构造函数的情况。我不知道为什么,但我必须查一下这在 python 中是否合法。我在 C++ 和 Java 中做过很多次,但我不记得曾经用 python 做过。

传递对self新对象的引用是否不被视为pythonic?我认为我没有看到任何 python 程序明确地传递自我引用。直到现在我才碰巧不需要它吗?还是我在与蟒蛇风格作斗争?

4

2 回答 2

18

是的,它是合法的,是的,它是 Pythonic。

当你有一个对象和一个容器对象时,我发现自己使用这种模式,其中包含的对象需要知道它们的父对象。

于 2010-10-15T20:36:46.500 回答
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
于 2010-10-15T20:39:49.797 回答