TypeError:“_ _ init __()得到关键字参数'name'的多个值”

时间:2013-09-16 05:53:24

标签: python

为什么我在调用此构造函数时会在标题中出现错误?

我使用以下字典User(**args)呼叫args

{'name': u'Rose Perrone', 'ipAddress': '127.0.0.1', 'email': u'hi@gmail.com'}

这是构造函数:

def __init__(name,
             ipAddress,
             password=None,
             email=None,
             deleted=None,
             includePromoted=None,
             explicit=None):

1 个答案:

答案 0 :(得分:6)

首先,制作您的第一个参数self。你不必,但它非常非常普遍,当有人在阅读你的代码时(比如现在),这很烦人:p。

name的行为与self类似。你不应该传递name(self)的值,因为python已经这样做了。但是,您正在执行此操作,因为您的词典中有一个键name。因此,你将两个东西传递给一个参数,因此就是错误。

解决此问题:

  1. 首先, self !!!!

  2. 但也不要忘记添加name参数。

  3. 总而言之:

    args = {'name': u'Rose Perrone', 'ipAddress': '127.0.0.1', 'email': u'hi@gmail.com'}
    class MyClass:
        def __init__(self,
                     name,
                     ipAddress,
                     password=None,
                     email=None,
                     deleted=None,
                     includePromoted=None,
                     explicit=None):
                    pass
    
    MyClass(**args)
    # <__main__.MyClass instance at blah>