访问python中另一个类的方法
假设我有两个这样的课程:访问python中另一个类的方法,python,python-3.x,oop,Python,Python 3.x,Oop,假设我有两个这样的课程: class Class1(ParentClass1): def __init__(self): super(Class1, self).__init__() c2 = Class2() def foo(self): pass class Class2(ParentClass2): def __init__(self): super(Class2, self).__init__()
class Class1(ParentClass1):
def __init__(self):
super(Class1, self).__init__()
c2 = Class2()
def foo(self):
pass
class Class2(ParentClass2):
def __init__(self):
super(Class2, self).__init__()
def bar(self):
foo() # from Class1
如果在Class1
中创建了Class2
的实例,而Class1
本身在另一个类中启动,如何从Class2
访问foo()
换句话说,对话框(Class2
)必须从Class1
更新列表
更新
最初,我在\uuuuu name\uuuuu=='\uuuuu main\uuuu'
中有一个Class0
的实例Class0
创建Class1
的实例,然后我可以通过Class2
访问Class1
的实例,但是我需要在一些main()
函数上创建Class0
的实例,这不允许我访问Class1
方法。正确的术语有助于。。。您不想访问“类的方法”,而是“类的实例的方法”——这意味着您需要将类的实例传递给类的实例2:
class Class1(ParentClass1):
def __init__(self):
super(Class1, self).__init__()
self.c2 = Class2(self)
self.c2.bar()
def foo(self):
print("foo")
class Class2(ParentClass2):
def __init__(self, c1):
super(Class2, self).__init__()
self.c1 = c1
def bar(self):
self.c1.foo()
恰当的术语有助于。。。您不想访问“类的方法”,而是“类的实例的方法”——这意味着您需要将类的实例传递给类的实例2:
class Class1(ParentClass1):
def __init__(self):
super(Class1, self).__init__()
self.c2 = Class2(self)
self.c2.bar()
def foo(self):
print("foo")
class Class2(ParentClass2):
def __init__(self, c1):
super(Class2, self).__init__()
self.c1 = c1
def bar(self):
self.c1.foo()
如果没有Class1
的实例,您就无法做到这一点。也许将一个作为参数传递给bar
?@rassar,你的意思是将Class1
的一个实例作为参数传递给bar()
?确切地说,或者将一个参数传递给\uuuuu init\uuuuuu
,并让Class2
存储Class1
@rasar的一个实例,你说得对!我真为自己感到羞耻。如果没有Class1
的实例,你就无法将其作为答案发布。也许将一个作为参数传递给bar
?@rassar,你的意思是将Class1
的一个实例作为参数传递给bar()
?确切地说,或者将一个参数传递给\uuuuu init\uuuuuu
,并让Class2
存储Class1
@rasar的一个实例,你说得对!我真为自己感到羞耻。你可以把它贴出来作为答案