覆盖@classmethod,输入异常

时间:2013-11-21 03:14:19

标签: python django

我正在尝试使用我自己的'snAccount'类扩展名为'Account'(来自django-user-accounts app)的类,因为我需要为每个用户帐户添加一些额外的字段。当我尝试用我的方法覆盖父类的“工厂”方法(@​​classmethod)时出现问题:

# Original method
@classmethod
def create(cls, request=None, **kwargs):
    ...
    ...

# Override attempt
@classmethod
def create(cls, request=None, **kwargs):
    create_email = kwargs.pop("create_email", True)
    user = kwargs.pop("user", None)
    acc = Account.create(request, user, create_email)
    x_account = cls(account, **kwargs)
    x_account.save()
    return x_account

我遇到的问题是以下异常:

Django Version:     1.4.5
Exception Type:     TypeError
Exception Value:    create() takes at most 2 arguments (4 given)
Exception Location: /home/.../WebServices/models.py in create, line 27

...我无法理解,因为该方法的定义另外需要2个隐式参数和** kwargs。我究竟做错了什么?我对Python没有太多经验,你可能会看到......

1 个答案:

答案 0 :(得分:3)

您实际上并未使用任何关键字参数。

acc = Account.create(request, user=user, create_email=create_email)