【发布时间】:2012-01-22 06:02:04
【问题描述】:
我正在构建一个包含各种功能的库,这些功能将在项目中经常被重用。每个函数都是无状态的(在创建时不需要参数,也没有任何内存)。有些函数使用其他函数。
这些函数将作为参数传递给项目的其余部分。
以下哪种方法更好?
1.将所有函数定义为某个模块中的全局函数:
def f1(x):
# use x
def f2(x):
# use x and f1
2.将所有函数定义为类中的方法,并根据用途将类按层次排列:
class F1:
def __call__(x):
# use x
f1 = F1()
class F2(F1):
def __call__(x):
# use x and f1
f2 = F2()
我什至考虑选项 2 的原因是我的一些函数有一些共同点。例如,函数f2、f3、f11 都以调用f1 开始。我在想我可能想做这样的事情:
class F1:
def __call__(self, x):
self.f1(x)
self.calc(x)
def f1(self, x):
# do something
# don't define calc here; F1 is abstract base class
class F2(F1):
def calc(self, x):
# do something
class F3(F1):
def calc(self, x):
# do something
【问题讨论】:
-
你是从哪里想到要做 2 的?
-
@FrancisAvila:查看我更新的问题来解释我的想法。
-
您的意思是让
F2和F3扩展F1?这不是代码所说的......
标签: python python-3.x