编程语言
首页 > 编程语言> > Python Noob无法使类方法起作用

Python Noob无法使类方法起作用

作者:互联网

我的客户类中有一个名为save_from_row()的方法.看起来像这样:

@classmethod
def save_from_row(row):
    c = Customer()
    c.name = row.value('customer', 'name')
    c.customer_number = row.value('customer', 'number')
    c.social_security_number = row.value('customer', 'social_security_number')
    c.phone = row.value('customer', 'phone')
    c.save()
    return c

当我尝试运行脚本时,得到以下信息:

Traceback (most recent call last):
  File "./import.py", line 16, in <module>
    Customer.save_from_row(row)
TypeError: save_from_row() takes exactly 1 argument (2 given)

我不理解参数数量的不匹配.这是怎么回事?

解决方法:

类方法的第一个参数是类本身.尝试

@classmethod
def save_from_row(cls, row):
    c = cls()
    # ...
    return c

要么

@staticmethod
def save_from_row(row):
    c = Customer()
    # ...
    return c

classmethod变体将使您能够创建具有相同工厂功能的Customer子类.

我通常会使用模块级函数来代替staticmethod变量.

标签:python,class-method
来源: https://codeday.me/bug/20191014/1912573.html