在 init 之后传递继承类的实例(Python 2.7)



我正在尝试访问另一个class a中的class b对象(self.variable(,在class bclass c继承并调用class a的实例之后。我不知道如何访问在继承初始化期间创建的class b实例。此外,需要从class k继承。

最佳方法是如果我可以访问class a内部的self.variable并进一步传递它而不明确引用class b的实例(即,仅使用self.variable而不是b.variable调用它(,并且不更改我已经分配给class c中的变量的值(因此无需重新初始化它(

我将不胜感激任何帮助,我已经在这里待了几个小时。

class k(object):
def __init__(self):
pass
class b(object):
def __init__(self):
self.variable = 1
class c(b):
def __init__(self):
b.__init__(self)# b is inherited from & initialized
# alternative for inheritance
#super(c,self).__init__()
print("init(): " + str(self.variable))
def run(self):
self.variable = 2
print("run(): " + str(self.variable))
a()# here I need to pass the instance of b
class a(k):
def __init__(self):
k.__init__(self)# a() needs to inherit from k()
# ERROR: cannot access variables of b()
print("a(): " + str(self.variable))

if __name__ == "__main__":
c().run()

我想我想出了该怎么做。 如果传递实例就足够了,这将起作用:

class k(object):
def __init__(self):
pass
class b(object):
def __init__(self):
self.bb = self.bb()
class bb:
def __init__(self):
self.variable = 1
class c(b):
def __init__(self):
b.__init__(self)# b is inherited from & initialized
# alternative for inheritance
#super(c,self).__init__()
print("init(): " + str(self.bb.variable))
def run(self):
self.bb.variable = 99
print("run(): " + str(self.bb.variable))
a(self)# pass instance of b
class a(k):
def __init__(self, bInstance):
k.__init__(self)# a() needs to inherit from k()
print("a(): " + str(bInstance.bb.variable))


if __name__ == "__main__":
c().run()

据我了解,如果我想通过 self 到达那里,我需要class aclass cclass c继承和初始化class b,最后的调用只是a()(它做了我需要它做的事情,因为 a 继承了我需要的一切(:

class k(object):
def __init__(self):
pass
class b(object):
def __init__(self):
self.bb = self.bb()
class bb:
def __init__(self):
self.variable = 1
class c(b):
def __init__(self):
b.__init__(self)# b is inherited from & initialized
# alternative for inheritance
#super(c,self).__init__()
print("init(): " + str(self.bb.variable))
def run(self):
self.bb.variable = 99
print("run(): " + str(self.bb.variable))

class a(k,c):
def __init__(self):
k.__init__(self)# a() needs to inherit from k()
c.__init__(self)
print("a(): " + str(self.bb.variable))
self.run()
print("a() #2: " + str(self.bb.variable))

if __name__ == "__main__":
a()

最新更新