使类内的类进行通信

时间:2014-09-23 14:09:55

标签: python class python-3.x

我从JavaScript进入Python并遇到了一个我无法解决的问题。

我有一个像这样的主控制器:

from TVcontroller import TVController

class MainController(object):
    def __init__(self):
        self.TVControllers = []
        self.TVControllers.append(TVController("VardagsrumsTV"))
        self.TVControllers.append(TVController("Köks TV"))
        print("Welcome to the TV-simulator")

 ...

它从:

创建新的TVController个实例
from TV import TV

class TVController(object):

    def __init__(self, name):
        self.TV = TV(name)

    def exit(self):
       #I WANT TO INVOKE A FUNCTION ON MY PARENT!

...

我希望TVController能够告诉MainController何时退出。 在JavaScript中,我只想写一些"on,event, do-this"函数。如何在Python中处理它?<​​/ p>

1 个答案:

答案 0 :(得分:5)

一种选择是让TVController持有对其master的引用(我会避免使用术语parent,因为这通常意味着继承)MainController实例:

class TVController(object):

    def __init__(self, name, master=None):
        self.TV = TV(name)
        self.master = master

    def exit(self):
        if self.master is not None:
            self.master.... # whatever

然后创建它们:

class MainController(object):

    def __init__(self):
        self.TVControllers = []
        self.TVControllers.append(TVController("VardagsrumsTV", self))
        self.TVControllers.append(TVController("Köks TV", self))
        print("Welcome to the TV-simulator")