Как вызвать метод класса без вызова экземпляра?

В Python существует несколько способов вызвать метод класса без вызова экземпляра.

Первый способ - использование имени класса. В этом случае вы можете использовать имя класса, за которым следует имя метода, и передать необходимые аргументы:

class MyClass:
    @classmethod
    def my_method(cls, arg1, arg2):
        print("Argument 1:", arg1)
        print("Argument 2:", arg2)

MyClass.my_method("Hello", "World")

Результат выполнения будет:

Argument 1: Hello
Argument 2: World

Второй способ - использование декоратора @staticmethod. Вы можете использовать этот декоратор, чтобы объявить метод класса, который не будет принимать ссылку на сам объект класса self или класс cls в качестве первого аргумента. Просто определите метод без передачи ссылки на объект или класс:

class MyClass:
    @staticmethod
    def my_method(arg1, arg2):
        print("Argument 1:", arg1)
        print("Argument 2:", arg2)

MyClass.my_method("Hello", "World")

Результат выполнения будет таким же, как и в предыдущем случае:

Argument 1: Hello
Argument 2: World

Третий способ - использование функции getattr(). Эта функция позволяет получить атрибут объекта по его имени. Вы можете использовать эту функцию, чтобы получить метод класса и вызвать его:

class MyClass:
    def my_method(self, arg1, arg2):
        print("Argument 1:", arg1)
        print("Argument 2:", arg2)

method = getattr(MyClass, "my_method")
method(None, "Hello", "World")

В данном случае необходимо передать значение None в качестве первого аргумента, так как метод не будет принимать ссылку на объект класса self.

Все эти способы позволяют вызвать метод класса без вызова экземпляра. Каждый из них имеет свои особенности и может быть полезен в различных ситуациях, в зависимости от требований вашего проекта.