Как можно сделать метод класса сразу статическим и динамическим?

В Python есть несколько способов объявить метод класса, который будет и статическим, и динамическим одновременно.

Первый способ - использовать декоратор @staticmethod, который обозначает метод класса как статический. Статический метод не требует доступа к атрибутам класса или экземпляру, он работает только с переданными ему аргументами. Он не может обращаться к другим атрибутам класса или вызывать другие методы этого класса.

class MyClass:
    @staticmethod
    def static_and_dynamic_method(arg1, arg2):
        # тело метода
        pass

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

class MyClass:
    def static_and_dynamic_method(self, arg1, arg2):
        # тело метода
        pass

При вызове метода класса из класса без создания экземпляра:

MyClass.static_and_dynamic_method(arg1, arg2)

При вызове метода класса через созданный экземпляр класса:

my_object = MyClass()
my_object.static_and_dynamic_method(arg1, arg2)

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