从父对象获取属性

时间:2016-06-07 21:18:42

标签: python

在python中,我在类中创建了一个对象:

class A:
     def __init__(self):
         self.one = 1
         self.two = B()

现在我定义了B类,我想从B()

中访问self.one
class B()
    def __init__(self):
        self.three = "hello"
        # here I want to change self.one from class A to self.one + 1
        # how to do it without doing self.two = B(self.one) on class A
        # definition?

something = A()

有没有办法引用父对象属性,还是我们必须在创建对象时传递值?

1 个答案:

答案 0 :(得分:2)

A不是父对象,父对象是您继承的对象。 B不知道A,你必须修改你的类结构,例如通过在B的构造函数中传递对父类的引用(你说你不想这样做,但是你不明白你的意思是什么意思) self.two = B(self.one)“,因为这会传递self.one的副本,而不是引用,但是这样做的方式

class A:
     def __init__(self):
         self.one = 1
         self.two = B(self)

class B()
    def __init__(self, parent):
        self.three = "hello"
        self.parent = parent

        print self.parent.one # or do whatever you want with it

如果你真的必须这样做,你可以使用内省,但是这是实现结果的丑陋,黑客,坏方法

import inspect        

class A():
    def __init__(self):
        self.one = 1
        self.two = B()

class B():
    def __init__(self):
        self.three = "hello"
        self.parent = inspect.currentframe().f_back.f_locals['self']

        print self.parent.one