在Python中将self传递给构造函数

13 投票
2 回答
6676 浏览
提问于 2025-04-16 05:34

我最近在做一个小的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中也是一种很好的写法。

我发现当你有一个对象和一个包含这个对象的容器时,里面的对象需要知道它们的父对象时,我会使用这种写法。

撰写回答