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