当我学习Python中的*arg和**kwargs时,我想到了这个问题。举个例子:
class Person1():
def __init__(self, name, age, *petdogs):
self.name = name
self.age = age
self.petdogs = list(petdogs)
def show_dogs(self):
for petdog in self.petdogs:
print(petdog)
Dummy = Person1("Dummy", 16, "A", "B", "C")
Dummy.show_dogs()
#Output:
#A
#B
#C
是否可以将多个*和**参数传递给一个对象?
以下是我尝试过的:
class Person2():
def __init__(self, name, age, *petdogs, *petcats):
self.name = name
self.age = age
self.petdogs = list(petdogs)
self.petcats = list(petcats)
def show_dogs(self):
for petdog in self.petdogs:
print(petdog)
def show_cats(self):
for petcat in self.petcats:
print(petcats)
然后
Dummy2 = Person2(name = "Dummy", age = 16, petdogs = ("A", "B", "C"), petcats = ("D", "E"))
print("pet dogs:")
Dummy2.show_dogs()
print("pet cats:")
Dummy2.show_cats()
我想看到输出像上面的例子一样
pet dogs:
A
B
C
pet cats:
D
E
当然它不起作用,但我想知道是否有一种方法可以通过使用*
*args
构造在函数中充当传递的其余参数的占位符,因此不能有两个“其余参数占位符”,因为技术上只有一个“其余参数”。 示例:**kwargs
在本质上类似,但适用于以keyword=value
方式传递的参数:传递的任何关键字参数的其余部分将以名称kwargs
的dict
形式显示在函数中。 示例:对于你想做的事情,从技术上讲,你不想表达“休息”,因此你可以:
及
会很好的
相关问题 更多 >
编程相关推荐