Python class 声明 "positional argument" 错误
Python class declaration "positional argument" error
我正在试验 pandas。我正在尝试创建一个简单的对象来表示我想要使用的数据。为此,我编写了下面的代码来创建一个对象,但我得到了:
TypeError: test_df() missing 1 required positional argument: 'self
第 13 行。我无法弄清楚我做错了什么。也许我没有得到关于 class 声明的概念。非常感谢任何帮助。
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
使用:
mov = ICBC("matisalimba3","z:\devs\py\movimientos.csv")
mov.test_df()
而不是
ICBC.test_df()
test_df是一个实例方法,所以你需要一个实例来访问它。您的问题是您尝试访问该方法,因为它是 class 方法
test_df
是实例方法;您需要在 ICBC
的实例上调用它,而不是在 ICBC
本身上调用它。也许你打算写 mov.test_df()
?
一旦您创建了 class 的实例(使用 ICBC(...)
),您需要在 实例 [=31] 上调用 test_df
方法=],而不是 class 本身 .
更改您的代码,使 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)
但是,没有人这样做:这不是好的做法,因为它会使代码更长且更难阅读。
我正在试验 pandas。我正在尝试创建一个简单的对象来表示我想要使用的数据。为此,我编写了下面的代码来创建一个对象,但我得到了:
TypeError: test_df() missing 1 required positional argument: 'self
第 13 行。我无法弄清楚我做错了什么。也许我没有得到关于 class 声明的概念。非常感谢任何帮助。
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
使用:
mov = ICBC("matisalimba3","z:\devs\py\movimientos.csv")
mov.test_df()
而不是
ICBC.test_df()
test_df是一个实例方法,所以你需要一个实例来访问它。您的问题是您尝试访问该方法,因为它是 class 方法
test_df
是实例方法;您需要在 ICBC
的实例上调用它,而不是在 ICBC
本身上调用它。也许你打算写 mov.test_df()
?
一旦您创建了 class 的实例(使用 ICBC(...)
),您需要在 实例 [=31] 上调用 test_df
方法=],而不是 class 本身 .
更改您的代码,使 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)
但是,没有人这样做:这不是好的做法,因为它会使代码更长且更难阅读。