gpt4 book ai didi

python - 拆分一个太大的类

转载 作者:行者123 更新时间:2023-11-28 20:27:20 25 4
gpt4 key购买 nike

我有一个类 BigStructure,它根据一些输入构建一个复杂的数据结构。它还包括对该数据结构执行操作的方法。

类变得太大,所以我试图将它分成两部分以帮助维护。我在想,将操作移到一个新类中是很自然的,比如 OperationsOnBigStructure 类。

不幸的是,由于 BigStructure 类非常独特,OperationsOnBigStructure 不能合理地与任何其他类重用。从某种意义上说,它永远与 BigStructure 联系在一起。例如,典型的操作可能包括以仅对 BigStructure 对象有意义的方式遍历大型结构实例。

现在,我上了两个类,但感觉我没有任何进步。事实上,我让事情稍微复杂了一些,因为我现在需要将 BigStructure 对象传递给 OperationsOnBigStructure 中的方法,并且它们需要在内部存储该对象。

我应该只和一个大类一起生活吗?

最佳答案

我为这个问题提出的解决方案是创建一个包来包含该类。类似的东西:

MyClass/
__init__.py
method_a.py
method_b.py
...

在我的例子中,__init__.py 包含实际的数据结构定义,但没有方法。要将方法“附加”到类,我只需将它们导入类的命名空间。

method_a.py的内容:

def method_a(self, msg):
print 'a: %s' % str(msg)

__init__.py 的内容:

class MyClass():
from method_a import method_a
from method_b import method_b

def method_c(self):
print 'c'

在 python 控制台中:

>>> from MyClass import MyClass
>>> a = MyClass()
>>> dir(a)
['__doc__', '__module__', 'method_a', 'method_b', 'method_c']
>>> a.method_a('hello world')
a: hello world
>>> a.method_c()
c

这对我有用。

关于python - 拆分一个太大的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9155618/

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