gpt4 book ai didi

Python 类设计 - 将大类拆分为多个类以对功能进行分组

转载 作者:太空狗 更新时间:2023-10-29 17:07:13 25 4
gpt4 key购买 nike

好的,我有 2 个非常大的类 > 1k 行,我目前已经分成多个类。然后使用多重继承对它们进行重组。现在我想知道,是否有任何更清洁/更好的 pythonic 方式来执行此操作。将它们完全排除在外会导致无穷无尽的 self.otherself.do_something 调用,我认为这不是应该完成的方式。

为了清楚起见,这是它目前的样子:

from gui_events import GUIEvents # event handlers
from gui_helpers import GUIHelpers # helper methods that don't directly modify the GUI

# GUI.py
class GUI(gtk.Window, GUIEvents, GUIHelpers):
# general stuff here stuff here

由此产生的一个问题是 Pylint 提示给我数以万亿计的“未调用初始化”/“未定义的属性”/“定义前访问的属性”警告。

编辑:
您可能想看一下代码,让自己了解整个事情的实际情况。
http://github.com/BonsaiDen/Atarashii/tree/next/atarashii/usr/share/pyshared/atarashii/

请注意,我真的在尽一切努力让这个东西尽可能保持干燥,我正在使用 pylint 来检测代码重复,它唯一提示的是导入。

最佳答案

如果你想使用多重继承将所有东西组合成一个大类(这样做可能有意义),那么你可以重构每个父类,以便每个方法和属性都是私有(private)的(以 '__') 或具有该类特有的 2-3 个短字符前缀。例如,GUIEvents 类中的所有方法和属性都可以以 ge_ 开头,GUIHelpers 中的所有内容都可以以 gh_ 。通过这样做,您将获得使用单独子类实例的一些清晰度(self.ge.doSomething() vs self.ge_doSomething())和您将避免成员名称冲突,这是将如此大的类合并为一个时的主要风险。

关于Python 类设计 - 将大类拆分为多个类以对功能进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2505166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com