如何在Python的静态方法中将类变量作为默认值传递

时间:2018-11-28 20:25:51

标签: python class static parameter-passing static-methods

我想将类变量作为默认值传递给静态方法。 但是当我导入类时,出现错误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 :(得分:4)

当Python想要绑定默认参数时,尚未定义

MyClass,但是在类的作用域中已经定义了xy

换句话说,您可以编写:

class MyClass:
    x = 100
    y = 200

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

请注意,foo不会识别对MyCLass.xMyClass.y的重新分配,因为在创建函数时,默认参数会绑定一次。

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