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

时间:2015-06-20 23:12:18

标签: python object constructor instantiation

我想知道如何在python中初始化一个只有名为args的对象,如果可能的话,没有别的。

enter image description here

如果交换了self.name = name和self.age = age的顺序,则错误在于初始化年龄。我将这些作为对象的关键字args给出,那么为什么这还不够呢?我看到了一个潜入python的类,用显式命名的关键字参数和它们的默认值(filename = None)实例化,所以我假设** kwargs也可以工作。谢谢

2 个答案:

答案 0 :(得分:4)

您缺少的是需要通过名称明确检索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

输出:

<__main__.Person object at 0x1074e0bd0>
45

答案 1 :(得分:2)

kwargs是一本字典。所以你应该这样做:

class Person(object):
    def __init__(self, **kwargs):
        self.name = kwargs["name"]
        self.age = kwargs["age"]