【问题标题】:Is it possible to use self.value as default argument in method? [duplicate]是否可以在方法中使用 self.value 作为默认参数? [复制]
【发布时间】:2020-01-27 06:06:32
【问题描述】:

我想使用类__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


    【解决方案1】:

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

    您的运行时逻辑似乎是

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

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

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

    这是否足以满足您的目的?

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-11-10
        • 1970-01-01
        • 1970-01-01
        • 2018-02-11
        • 1970-01-01
        • 2018-08-18
        • 1970-01-01
        • 2016-07-03
        • 2014-05-19
        相关资源
        最近更新 更多