Python классифицирует функции
Есть ли способ классифицировать функции, чтобы я мог вызвать функцию, как это:
category something():
def test():
[Code]
def test2():
[Code]
something.test()
something.test2()
Я думал об использовании классов, но кажется, что им всегда нужен экземпляр, например, self в качестве атрибута.
Если я ошибаюсь, пожалуйста, не стесняйтесь поправлять меня, я новичок в Python и не так много опыта.
Пока я использовал для этого разные файлы, но часто сталкивался с проблемами циклической зависимости и хотел спросить, есть ли простое решение этой проблемы.
Это для того, чтобы немного очистить код и узнать, к какой части скрипта может принадлежать функция, когда у вас много кода.
1 ответ
Вам на самом деле не нужен экземпляр - вы можете объявить каждый метод как (или, фактически, преобразовать его) в "статический" метод:
class Foo:
@staticmethod
def Bar(x, y):
return x + y
@staticmethod
def Baz(x, y):
return x - y
print(Foo.Bar(3, 4))
Интерпретация первого аргумента как ссылки на экземпляр (условно, но не обязательно, называется self
) не бывает в статических методах.
Но создание классов, полных статических методов, было бы несколько не по назначению class
, Более распространенный способ категоризации ресурсов в Python - это разделение их на модули и пакеты (т.е. отдельные файлы и / или каталоги):
# in Foo.py
def Bar(x, y):
return x + y
а потом:
>>> import Foo
>>> Foo.Bar(3, 4)
7