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