Как передать переменную класса в качестве значения по умолчанию в статическом методе в Python - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу передать переменную класса в качестве значения по умолчанию статическому методу.Но когда я импортирую класс, я получаю ошибку NameError: name 'MyClass' is not defined

class MyClass:

    x = 100
    y = 200

    @staticmethod
    def foo(x = MyClass.x, y = MyClass.y):
        return x*y

1 Ответ

0 голосов
/ 28 ноября 2018

MyClass еще не определено, когда Python хочет связать аргументы по умолчанию, но x и y уже определены в области видимости классов.

Другими словами, вы можете написать:

class MyClass:
    x = 100
    y = 200

    @staticmethod
    def foo(x=x, y=y):
        return x*y

Обратите внимание, что foo будет не распознавать переназначения MyCLass.x и MyClass.y, поскольку аргументы по умолчанию связаны один раз при создании функции.

>>> MyClass.foo()
20000
>>> MyClass.x = 0
>>> MyClass.foo()
20000
...