Python代码中的疑问
我正在读一本关于Python算法的书,我对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
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
。这是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”获取了多个值感谢对*和的解释**