哪个python实现更好

Moa*_*ghi 2 python oop

以下哪一项被认为是更好的设计?为什么?我有两个类,一个用于gui组件,另一个用于它的事件.
请记住,eventClass将被实现很多次(有时从oracle数据库获取数据,有时甚至是mysql数据库)

class MainWindow:

    def __init__(self):
        self.myEvents = eventClass()  # the class that has all the events 
        self.button = button # consider it a button from any gui library
        self.menu  = menu  # menu box 

    def bottonEvent(self):
        data = self.myEvents.buttonEvent()
        self.menu.populate(data)

class eventClass:

    def __init__(self):
          pass
    def getData(self):
         return data # return data to puplate in the list
Run Code Online (Sandbox Code Playgroud)

要么

class MainWindow:

    def __init__(self):
        self.myEvents = eventClass(self)  # the class that has all the events 
        self.button = button # consider it a button from any gui library
        self.menu  = menu  # menu box 

    def bottonEvent(self):
        self.myEvents.ButtonEvent()

class eventClass:

    def __init__(self,window):
          pass
    def ButtonEvent(self):
         window.menu.populateData()
Run Code Online (Sandbox Code Playgroud)

如果有任何不清楚的地方请通知我,

提前帮助,谢谢

Ale*_*lli 5

第一种选择是更好的"解耦":事件类需要并且对窗口对象或其菜单属性一无所知 - 这是一种极好的方法,使事件类特别容易单独测试,无需任何开销.如果需要存在许多相同接口的实现,这是特别好的,正如您所提到的那样.

第二种选择引入了相互依赖 - 如果没有窗口对象,事件对象就无法工作,窗口对象会构建一个事件对象.这可能是一个可接受的复杂情况,在更多深奥的情况下,它会给你买东西,但对于这个特定的用途,它听起来更像是一个任意的额外难度,没有任何真正的加分.

所以,我会推荐第一个表格.