python - 如何在 Python 中使用类变量作为默认参数值

标签 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

最佳答案

MyClass当 Python 想要绑定(bind)默认参数时尚未定义,但是 xy已经在类的范围内定义。

换句话说,你可以写:

class MyClass:
    x = 100
    y = 200

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

请注意 foo将不承认对 MyCLass.x 的重新分配和 MyClass.y因为默认参数在创建函数时绑定(bind)一次。
>>> MyClass.foo()
20000
>>> MyClass.x = 0
>>> MyClass.foo()
20000

关于python - 如何在 Python 中使用类变量作为默认参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53527546/

相关文章:

python - 当 python 脚本有未处理的异常时退出代码

ios - 由于弃用而替换 self->isa

c++ - 不断收到错误 "is not a class or namespace"或 "cannot call member function without object"

javascript - UnCaught TypeError - Javascript 中的嵌套对象?为什么这是不允许的?对象字面量表示法有效

java - 类中的静态字段

java - 显式强制转换调用构造函数?

python:查找html标签并替换它们的属性

iphone - 我可以使用 PyObjC 编写面向非越狱 iPhone 的 Python 应用程序吗?

wpf - Combobox.ItemsSource 上的 StaticResource 与 DynamicResource 行为

python - 如何更改保存图片的目录,scrapy