Python noob can';I don’我不能让课堂方法起作用

Python noob can';I don’我不能让课堂方法起作用,python,class-method,Python,Class Method,我在Customer类中有一个名为save\u from\u 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('cust

我在
Customer
类中有一个名为
save\u from\u 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)
回溯(最近一次呼叫最后一次):
文件“/import.py”,第16行,在
Customer.save_from_row(row)
TypeError:save_from_row()正好接受1个参数(给定2个)
我不理解参数数量的不匹配。发生了什么事?

您想要:

@classmethod
def save_from_row(cls, row):
类方法获取方法的类作为第一个参数。

您需要:

@classmethod
def save_from_row(cls, row):

类方法将方法的类作为第一个参数。

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

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

classmethod
变量将允许使用相同的工厂功能创建
Customer
的子类


我通常使用模块级函数,而不是
staticmethod
变量。

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

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

classmethod
变量将允许使用相同的工厂功能创建
Customer
的子类


我通常使用模块级函数,而不是
staticmethod
变量。

模块级函数是指可以在任何型号上使用的函数?这就是我最终希望做的。不管怎样,这为我解决了问题。谢谢。我所说的模块级函数是指我有一个类为
customer
的模块
customer
(或其他)和一个函数
customer\u from_row()
,它返回一个新的
customer
实例。你所说的模块级函数是指可以在任何型号上使用的函数吗?这就是我最终希望做的。不管怎样,这为我解决了问题。谢谢。所谓模块级函数,我的意思是我有一个类为
customer
的模块
customer
(或其他),还有一个函数
customer\u from_row()
,它返回一个新的
customer
实例。