class(people)需要3个名为“ name,middle_name和surname”的参数,而我试图将这些参数像下面这样:
def argument():
name = input("name : ")
middle_name = input("middle name : ")
last_name = input("last name : ")
return name,middle_name,last_name
person = people(argument())
但是不知何故,我收到的错误消息:
TypeError: __init__() missing 2 required positional arguments
答案 0 :(得分:6)
假设以下人员定义:
class people:
def __init__(self, name, middle_name, last_name):
self.name = name
self.middle_name = middle_name
self.last_name = last_name
这应该有效:
def argument():
name = input("name : ")
middle_name = input("middle name : ")
last_name = input("last name : ")
return name, middle_name, last_name
person = people(*argument())
print(person.name)
print(person.middle_name)
print(person.last_name)
请注意在调用参数*
之前的argument()
。这就是所谓的unpacking
答案 1 :(得分:3)
您可以使用星号/爆炸符号解压缩它们
person = people(*argument())
作为一个随机提示,在Python中,我们通常将类名大写,因此我建议使用类似Person
类的东西,而不是尝试根据复数来区分类和实例(people
vs person
)。只需执行Person
(该类)与person
(一个实例)即可。
答案 2 :(得分:2)
argument
函数将返回元组。您需要打开包装才能提供3个位置参数
person = people(*argument())