我想知道如何在python中初始化一个只有名为args的对象,如果可能的话,没有别的。
如果交换了self.name = name和self.age = age的顺序,则错误在于初始化年龄。我将这些作为对象的关键字args给出,那么为什么这还不够呢?我看到了一个潜入python的类,用显式命名的关键字参数和它们的默认值(filename = None)实例化,所以我假设** kwargs也可以工作。谢谢
答案 0 :(得分:4)
您缺少的是需要通过名称明确检索kwargs。这是您的代码的修改版本,以进行说明。请注意name
和age
的初始化。
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"]