Python代码中的疑问

Python代码中的疑问,python,algorithm,Python,Algorithm,我正在读一本关于Python算法的书,我对Python也是新手 我无法理解这个例子: class Bunch(dict): def __init__(self, *args, **kwds): super(Bunch, self).__init__(*args, **kwds) self.__dict__ = self x = Bunch(name="Jayne Cobb", position="Public Relations") print x.na

我正在读一本关于Python算法的书,我对Python也是新手

我无法理解这个例子:

class Bunch(dict):
    def __init__(self, *args, **kwds):
        super(Bunch, self).__init__(*args, **kwds)
        self.__dict__ = self

x = Bunch(name="Jayne Cobb", position="Public Relations")
print x.name
一些问题:


  • 参数“args”和“kwds”中*和**的含义是什么
  • “超级”是什么意思
  • 在这个类中,我们扩展了“dict”类?这是一个内置类
致以最良好的祝愿

  • 。解释
    *
    **

  • 。超级解释

  • 。迪克特解释道

  • 在这个类中,我们扩展了“dict”类?这是一个内置类

    实际上,您正在扩展基本的
    dict
    。这是Python中的本机类。在以前的Python版本中,您无法扩展本机类,但随着时间的推移,情况发生了变化

    “超级”是什么意思

    函数
    super
    指定类的父类,使用与继承相同的顺序


    参数“args”和“kwds”中*和**的含义是什么


    *args
    扩展为包含非命名参数的元组,而
    **kwargs
    扩展为包含命名参数的字典。它用于管理参数数量可变的函数。

    *args
    表示:收集此列表中没有名称的所有额外参数:

    def x(a, *args): pass
    x(1, 2, 3)
    
    分配
    a=1
    args=[2,3]

    **kwargs
    dict
    kawrgs
    分配所有额外的参数和名称:

    def x(a, **kw): pass
    x(1, b=2, c=3)
    
    分配
    a=1
    kw={b=2,c=3}

    代码
    super(Bunch,self)。\uuuuu init\uuu(*args,**kwds)
    读取:使用实例
    self
    和参数
    *args,**kwds
    调用
    Bunch
    的方法
    \uuuuu init\uds>。这是初始化超类()的标准模式


    是的,
    dict
    是一个.

    *参数“args”和“kwds”中的**?在Python语言引用中定义。super是在Python语言参考中定义的。dict是在Python库手册中定义的。你为什么不先阅读这些文档?@S.Lott:+1,尽管lang引用对新手来说不是很容易理解。@Aaron Digulla:“lang引用对新手来说不是很容易理解”。我觉得那不是真的。我在问一个非常具体的问题。“你为什么不先阅读这些文档呢?”我希望找出为什么有人不先阅读这些文档。嗯,在学习类定义之前,你可能应该先了解内置类以及如何定义函数。几乎正确,但在第二个示例中,它抛出了一个错误TypeError:x()为关键字参数“a”获取了多个值感谢对*和的解释**