假设我在一个对象(对象1)中,并且想要将其引用传递给我在其中创建的另一个对象(对象2)。
内部对象1:
# ...
self.object2Reference = object2(self)
# ...
对象2的代码:
class object2:
def __init__(self, object1Reference)
self.object1Reference = object1Reference
# ...
它失败,并显示以下错误:
self.object2 = object2()
TypeError: __init__() takes exactly 2 arguments (1 given)
我希望能够从object2内部访问object1的变量和方法。
编辑: self.object2Reference = object2(self)
发生在通过新线程启动的方法内部,因此self当时不是我期望的。我试图使这个示例尽可能的小和简单,但是却忘记了一个重要的方面。我的错。但是无论如何,答案都是好的且完整的,并且还说明了继承的使用。
要将当前对象传递给它声明要使用的另一个对象。
编码:
class Object2:
def __init__(self, object1):
self.object1 = object1
self.object1.print_something()
class Object1:
def __init__(self):
self.object2 = Object2(self)
def print_something(self):
print("I am an object1")
x = Object1()
似乎是您要尝试做的事情。这对我有用,并打印出“我是一个对象1”。如果您使用两个对象像上面那样构造代码,它应该可以按您希望的那样工作。
编辑:
如果您希望继承而不是仅使用对象
我还想补充一点,如果您正在寻找继承而不是仅能够访问object1,则可以这样进行:
class Object1:
def print_something(self):
print("I am an object1 method inherited by object 2")
class Object2(Object1):
def __init__(self):
super().__init__()
self.print_something()
x = Object2()
这样,Object2将继承它未实现的任何Object1方法。super().__init__()
并将(Object1)放在类声明中是您在此处所做的仅有的两项更改,以便能够使用self中的任何Object1方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句