访问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的一个实例,你说得对!我真为自己感到羞耻。你可以把它贴出来作为答案