【问题标题】:initializing python object with nothing but keyword args只用关键字 args 初始化 python 对象
【发布时间】:2015-09-06 17:05:48
【问题描述】:

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

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

【问题讨论】:

  • 我不是对您的问题投反对票的人,但仅供参考,最好粘贴文本代码而不是屏幕截图。

标签: python object constructor instantiation


【解决方案1】:

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

【讨论】:

  • 和使用 *args 可以通过 self.first_arg = args[0] 来完成 :) ty Mr. Rothman
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 2014-11-14
    • 2010-10-23
    • 2013-06-27
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多