Я создаю библиотеку различных функций, которые часто будут повторно использоваться в проекте. Каждая функция не имеет состояния (не требует параметров при создании и не имеет никакой памяти). Некоторые функции используют другие.python: дизайн библиотеки функций без гражданства
Эти функции будут переданы в качестве аргументов в остальной части проекта.
Какой из следующих подходов лучше?
1.Define все функции как глобальные функции в определенном модуле:
def f1(x):
# use x
def f2(x):
# use x and f1
2.Define все функции, как методы в классах, а также организовать классы в иерархии, основанные на использовании:
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: см. Мой обновленный вопрос, чтобы объяснить мое мышление. – max
Вы имели в виду, что 'F2' и' F3' продлевать 'F1'? Это не то, что говорит код ... –