Я уже несколько лет являюсь научным программистом Python, и я нахожу, что прихожу к определенной проблеме, поскольку мои программы становятся все больше и больше. Я сам преподаю, поэтому у меня никогда не было никакого формального обучения и в любое время потратил на "условности" кодирования на Python "правильно".
В любом случае, я считаю, что всегда создаю файл utils.py, который храню все мои определенные функции в том, что используют мои программы. Затем я обнаружил, что группирую эти функции в своих целях. Один из способов узнать о группировании вещей - это, конечно, использование классов, но я не уверен относительно того, идет ли моя стратегия против того, на каких классах следует фактически использовать.
Скажем, у меня есть куча функций, которые делают примерно одно и то же:
def add(a,b):
return a + b
def sub(a,b):
return a -b
def cap(string):
return string.title()
def lower(string):
return string.lower()
Теперь очевидно, что эти 4 функции можно рассматривать как выполнение двух отдельных целей - вычисление, а другое - форматирование. Это то, что логика говорит мне делать, но я должен обойти это, так как я не хочу инициализировать переменную, которая соответствует эвредде класса.
class calc_funcs(object):
def __init__(self):
pass
@staticmethod
def add(a,b):
return a + b
@staticmethod
def sub(a, b):
return a - b
class format_funcs(object):
def __init__(self):
pass
@staticmethod
def cap(string):
return string.title()
@staticmethod
def lower(string):
return string.lower()
Таким образом, я теперь "сгруппировал" эти методы вместе в хороший пакет, который позволяет быстрее находить нужные методы в зависимости от их роли в программе.
print calc_funcs.add(1,2)
print format_funcs.lower("Hello Bob")
Однако, как я уже сказал, я считаю, что это очень "нерешительный" способ сделать что-то, и это просто беспорядочно. Я собираюсь подумать об этом правильно или есть альтернативный метод?