是否可以在方法中使用self.value作为默认参数? [复制]

问题描述 投票:-1回答:2

此问题已经在这里有了答案:

我想将在类__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
python self
2个回答
2
投票

我不相信您可以将实例属性值用作默认值。您可以通过以下方法解决此问题:默认为None,然后在函数中进行其余操作:

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

1
投票

您不能这样做:定义函数时将评估默认值。

您的运行时逻辑似乎是

  • 如果传递了element,请打印出来
  • 否则,打印当前的self.value

您可以在方法内部使用条件获取它。

def print_element(self, element=None):

    print(element if element else self.value)

足够简短以适合您的目的吗?

© www.soinside.com 2019 - 2024. All rights reserved.