只用关键字 args 初始化 python 对象

cod*_*321 -2 python constructor object instantiation

我想知道如何在 python 中初始化一个对象,只使用命名的 args,如果可能的话。

在此处输入图片说明

如果self.name = name 和self.age = age 的顺序互换,则错误在于初始化age。我将这些作为关键字参数提供给对象,那为什么还不够呢?我看到一个类深入 python 实例化,使用显式命名的关键字参数和它们的默认值(文件名=无),所以我认为 **kwargs 也可以工作。谢谢

ron*_*man 5

您缺少的是需要按名称显式检索 kwargs。这是您的代码的修改版本,以进行说明。需要注意的初始化nameage

class Person(object):
    def __init__(self, **kwargs):
        self.name = kwargs.get('name')
        self.age = kwargs.get('age')
        # you'll probably want to check that all required
        # members were initialized.

bob = Person(name='bob', age=45)

print bob
print bob.age
Run Code Online (Sandbox Code Playgroud)

输出:

<__main__.Person object at 0x1074e0bd0>
45
Run Code Online (Sandbox Code Playgroud)