如何使用 class 变量作为 Python 中的默认参数值

How to use a class variable as a default argument value in Python

我想使用 class 变量作为静态方法中的默认参数值。 但是当我引用 class 时,出现错误 NameError: name 'MyClass' is not defined

class MyClass:

    x = 100
    y = 200

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

MyClass在Python想要绑定默认参数时还没有定义,但是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