我正在试验 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)
但是,没有人这样做:这不是好的做法,因为它会使代码更长且更难阅读。
