我想将类变量作为默认值传递给静态方法。
但是当我导入类时,出现错误NameError: name 'MyClass' is not defined
class MyClass:
x = 100
y = 200
@staticmethod
def foo(x = MyClass.x, y = MyClass.y):
return x*y
答案 0 :(得分:4)
MyClass
,但是在类的作用域中已经定义了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