Как редактировать метку, которая находится в другой сцене в XCode

Статические методы в Python?

Возможно ли иметь статические методы в Python, чтобы я мог их вызывать без инициализации класса, например:

ClassName.StaticMethod()

Да, статические методы могут быть созданы таким образом (хотя немного больше Pythonic используют символы подчеркивания вместо методов CamelCase для методов):

class ClassName(object):

    @staticmethod
    def static_method(kwarg1=None):
        '''return a value that is a function of kwarg1'''

Вышеупомянутое использует синтаксис декоратора. Этот синтаксис эквивалентен

class ClassName(object):

    def static_method(kwarg1=None):
        '''return a value that is a function of kwarg1'''

    static_method = staticmethod(static_method)

. Его можно использовать так же, как вы описали:

ClassName.static_method()

Встроенный пример статического метода str.maketrans() в Python 3, который была функцией в модуле string в Python 2.


Другим вариантом, который можно использовать при описании, является classmethod, разница в том, что метод class получает класс как неявный первый аргумент, и если он подклассифицирован, то он получает подкласс как неявный первый аргумент.

class ClassName(object):

    @classmethod
    def class_method(cls, kwarg1=None):
        '''return a value that is a function of the class and kwarg1'''

Обратите внимание, что cls не является обязательным именем для первого аргумента, но большинство опытных кодировщиков Python это плохо сделано, если вы используете что-либо еще.

Они обычно используются в качестве альтернативных конструкторов.

new_instance = ClassName.class_method()

Встроенный пример: dict.fromkeys():

new_dict = dict.fromkeys(['key1', 'key2'])
-1
задан skullamunger 18 January 2019 в 19:27
поделиться