从函数返回位置参数

时间:2018-12-21 19:07:22

标签: python python-3.x

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

3 个答案:

答案 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())