假设我在一个对象(object1)中,我想将它的引用传递给我在其中创建的另一个对象(object2)。
内部对象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不是我此时所期望的。我试图让这个例子尽可能小而简单,但忘了一个导入的方面这样做。我的错。但答案是好的和完整的,并且还显示了继承的使用。
答案 0 :(得分:3)
要将当前对象传递给另一个声明要使用的对象。
代码:
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__()
和put(Object1)在类声明中是你在这里做的唯一两个变化,然后能够使用self中的任何Object1方法。