【问题标题】:multiple default values for function arguments Python函数参数的多个默认值 Python
【发布时间】:2014-10-12 01:05:59
【问题描述】:

如果我有一个具有如下函数的类,并且我想要两个具有默认值的变量:

class item:
    def __init__(self, var1=1, var2=2)
        self.var1 = var1
        self.var2 = var2

如何创建此类的实例并更改 var2 的值而不更改 var1 的值?

a = item(#Leave var1 alone, but set var2 to 'hello')

【问题讨论】:

    标签: python function parameters parameter-passing


    【解决方案1】:

    你可以像这样实例化它:

    # leave var1 as default
    a = item(var2='hello')
    
    # leave var2 as default
    a = item(var1='hey')
    
    # overwrite both var1 and var2
    a = item(var1='hey', var2='hello')
    
    # use both defaults
    a = item()
    

    在评论中的示例中要注意的是,您现在必须提供var1,因为它没有默认值。所以item(var1=1, var3=2)item(1, var3=2) 都可以工作,而item(var3=2) 不行。当存在没有默认值的参数时,关键字参数也必须放在最后,因此item(var3=2, 1) 也不起作用,但item(var3=2, var1=1) 会。

    【讨论】:

    • 如果我有def __init__(self, var1, var2=2, var3=3) 会怎样?会一样吗?
    • 是的,应该是一样的。自己试试吧:)
    【解决方案2】:

    实例化时使用命名参数:

    a = item(var2=42)
    

    这将使var1 保留其默认值1,但将var2 设置为42。


    以下脚本显示了这一点:

    class item:
        def __init__(self, var1=1, var2=2):
            self.var1 = var1
            self.var2 = var2
    
    a = item()
    print a.var1
    print a.var2
    
    b = item(var2=42)
    print b.var1
    print b.var2
    

    它的输出是,根据需要:

    1
    2
    1
    42
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-03
      • 2011-02-20
      • 2011-04-09
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      相关资源
      最近更新 更多