Mig*_*rez 2 python static static-methods class parameter-passing
我想将类变量作为默认值传递给静态方法。但是当我导入类时,我得到一个错误NameError: name 'MyClass' is not defined
class MyClass:
x = 100
y = 200
@staticmethod
def foo(x = MyClass.x, y = MyClass.y):
return x*y
Run Code Online (Sandbox Code Playgroud)
MyClass是不是定义尚未Python的时候要绑定默认参数,但x和y在班的范围已经界定。
换句话说,您可以编写:
class MyClass:
x = 100
y = 200
@staticmethod
def foo(x=x, y=y):
return x*y
Run Code Online (Sandbox Code Playgroud)
请注意,foo将不承认调动到MyCLass.x和MyClass.y因为默认的参数绑定一次,创建功能时。
>>> MyClass.foo()
20000
>>> MyClass.x = 0
>>> MyClass.foo()
20000
Run Code Online (Sandbox Code Playgroud)