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
Другие вопросы по тегам