2014-09-23 13 views
2

我從JavaScript進入Python,遇到了一個我無法解決的問題。使類內的類通信

我有一個主控制器是這樣的:

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當它退出:

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實例。 在JavaScript中,我只會寫一些"on,event, do-this"函數。這在Python中如何處理?

回答

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") 
+0

這似乎正是我需要的。十分感謝。我真的錯過了Javascript的事件:( – Bangalter 2014-09-23 14:22:30

+1

沒有什麼能阻止你在Python中做事件:-) – Kos 2014-09-25 06:43:12