Python函数参数的多个默认值

7
如果我有一个类,其中包含以下函数,并且我想要两个具有默认值的变量:
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')
2个回答

3
您只需像这样实例化它:

# 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),会是一样的吗? - user3896917
是的,它会是一样的。自己试试吧 :) - sberry

0

在实例化时使用命名参数:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接