在python中,我在类中创建了一个对象:
class A:
def __init__(self):
self.one = 1
self.two = B()
现在我定义了B类,我想从B()
中访问self.oneclass 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()
有没有办法引用父对象属性,还是我们必须在创建对象时传递值?
答案 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