Skip to main content
 首页 » 编程设计

Python类声明 "positional argument"错误

2025年05月04日9del

我正在试验 Pandas 。我正在尝试创建一个简单的对象来表示我要使用的数据。为此,我编写了下面的代码来创建一个对象,但我得到了:

TypeError: test_df() missing 1 required positional argument: 'self

第 13 行。我无法弄清楚我做错了什么。也许关于我没有得到的类声明的概念。非常感谢任何帮助。

import pandas as pd 
 
class ICBC(): 
   def __init__(self, name, path): 
       self.name = name 
       self.df = pd.read_csv(path) 
 
   def test_df(self): 
       print(self.df.info) 
 
 
mov = ICBC("matisalimba3","z:\devs\py\movimientos.csv") 
ICBC.test_df() <- This is line 13 

请您参考如下方法:

一旦您创建了您的类的实例(使用 ICBC(...)),您需要在实例上调用 test_df 方法,而不是类本身。

更改您的代码,使 mov 成为您在 test_df() 上调用的内容:

import pandas as pd 
 
class ICBC(): 
   def __init__(self, name, path): 
       self.name = name 
       self.df = pd.read_csv(path) 
 
   def test_df(self): 
       print(self.df.info) 
 
 
mov = ICBC("matisalimba3","z:\devs\py\movimientos.csv") 
mov.test_df() 

为了进一步阐明错误告诉您的内容:当您在 Python 中调用实例上的方法时,会自动传递一个 self 参数。但是,ICBC 不是一个实例,所以 self 没有被传递。这会导致您看到的参数错误。

此行为意味着您也可以这样做来调用方法:

ICBC.test_df(mov) 

但是,没有人这样做:这不是好的做法,因为它会使代码更长且更难阅读。