1

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

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):
4

1 回答 1

6

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

name就像self这里一样。您不应该为name(self) 传递值,因为 python 已经这样做了。但是,您正在这样做,因为您name的字典中有一个键。因此,您将两件事传递给一个参数,因此出现错误。

要解决这个问题:

  1. 首先,self!!!!

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

总而言之:

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>
于 2013-09-16T05:58:51.533 回答