是否可以使用 self.value 作为方法中的默认参数?

Is it possible to use self.value as default argument in method?

我想使用 class __init__ 中定义的元素作为其他方法的默认参数。这是我的代码:

class Main():
    def __init__(self):
        self.value = 3

    def print_element(self, element=self.value):
        print(element)

main = Main()
main.print_element()

它产生错误:

Traceback (most recent call last):
  File "so.py", line 1, in <module>
    class Main():
  File "so.py", line 5, in Main
    def print_element(self, element=self.value):
NameError: name 'self' is not defined

我认为您不能将实例属性值用作默认值。您可以通过默认为 None 来解决它,然后在函数内完成其余的工作:

def print_element(self, element=None):
    if element is None:
        element = self.value

您不能这样做:默认值是在您定义函数时计算的。

您的 运行 时间逻辑似乎是

  • 如果传入element,打印
  • 否则,打印当前self.value

您可以在方法中使用条件来获取它。

def print_element(self, element=None):

    print(element if element else self.value)

这篇文章足够简短吗?