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

只使用关键字args初始化python对象,python,object,constructor,instantiation,Python,Object,Constructor,Instantiation,我想知道如果可能的话,如何在python中初始化一个只使用命名参数而不使用其他参数的对象 如果交换self.name=name和self.age=age的顺序,则错误为初始化age。我将这些作为关键字args提供给对象,为什么这还不够?我在python中看到一个类使用显式命名的关键字参数及其默认值(filename=None)实例化,所以我认为**kwargs也可以工作。谢谢您缺少的是kwargs需要通过名称显式检索。下面是代码的修改版本,以进行说明。注意name和age的初始化 class

我想知道如果可能的话,如何在python中初始化一个只使用命名参数而不使用其他参数的对象


如果交换self.name=name和self.age=age的顺序,则错误为初始化age。我将这些作为关键字args提供给对象,为什么这还不够?我在python中看到一个类使用显式命名的关键字参数及其默认值(filename=None)实例化,所以我认为**kwargs也可以工作。谢谢

您缺少的是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

45

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

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

不是我否决了你的问题,但仅供参考,粘贴文本代码比粘贴屏幕截图更好。使用*args可以通过self完成。first_arg=args[0]:)ty Rothman先生