获取属性的属性持有者

1 投票
1 回答
586 浏览
提问于 2025-04-16 21:09

一个属性能否指向它的持有者?

这里有个例子来说明我的意思:

class classA(object):
    def __init__(self):
        pass

class classB(object):
    def __init__(self):
        self.a=classA()

    def methodB(self):
        print "ClassB-s methodB called"

b=classB()
a=b.a

我能从a中引用b吗?我想在a中调用methodB。

1 个回答

1

不,实际上不是这样的。

当你初始化 b.a 时,它就变成了一个指向 classA 对象的引用:

>>> b.a
<__main__.classA object at 0x7feeb904df10>

要调用这个方法,你可以把父对象传给 classA

>>> class classA(object):
...    def __init__(self, parent):
...        self.parent = parent
...    
...    def method(self):
...        self.parent.methodB()
...
>>>
>>> class classB(object):
...    def __init__(self):
...        self.a=classA(self)
...
...    def methodB(self):
...        print "ClassB-s methodB called"
...
>>> b = classB()
>>> a = b.a
>>> a.method()
ClassB-s methodB called

这样一来,你就可以访问整个父对象了。

撰写回答