如何在不传递参数'self'的情况下在python中获取父对象引用?

时间:2019-07-18 12:45:36

标签: python class object reference

看下面的例子:

class People:
    def __init__(self, home):
        self.home = home
        self.name = 'Ankit'

        self.set_add()

    def set_add(self):
        self.add = self.home.add


class Home:
    def __init__(self):
        self.add = 'Jaipur, Rajasthan'

    def get_add(self):
        people = People(self)
        print(people.add)
        pass

home = Home()
home.get_add()

在这里,我必须传递self参数来访问父对象引用。 有什么方法可以在不传递任何参数的情况下访问父对象引用。

编辑:如果没有得到 看一下类__init__中的People函数,在这里我为该类的对象分配了引用,在该引用中创建了“ People”类的对象,然后在set_add中方法,在其中创建add类的对象的该类的对象的People

所有这些事情都是可能的,因为我正在传递创建该类People的对象的类的引用,正如您在get_add的{​​{1}}方法中看到的那样类,同时创建Home类的对象时,我要传递People,无论何时将创建self类的对象,都将作为Home类的对象的引用。

但是我想要我不想传递任何参数。因此,有没有一种方法可以使我在其他类中创建对象时不传递任何参数的情况下完成相同操作。

1 个答案:

答案 0 :(得分:0)

您已经将self(实例化的Home()对象,在这种情况下为home)作为类{{1}的初始化程序的home自变量的值进行了传递}}。

Home,即实例被隐式传递,并且您再次使用self来使类初始化程序如下:

self

此外,类之间没有父子关系,因为它们之间没有关系,您所使用的就像合成。也许您打算传递People.__init__(self, self) (貌似一个地址):

self.add

同样,您的类定义中有许多不清楚的内容,如果不完全理解它们,就很难得出正确的结论。