【问题标题】:Making classes within classes communicate使类中的类进行交流
【发布时间】:2014-09-23 14:09:55
【问题描述】:

我正在从 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 中是如何处理的?

【问题讨论】:

    标签: python class python-3.x


    【解决方案1】:

    一种选择是让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")
    

    【讨论】:

    • 这似乎正是我所需要的。非常感谢。我真的很怀念来自 Javascript 的事件 :(
    • 没有什么能阻止你在 Python 中做事件 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多