“缺少论点”;“自我”;python中的错误
我得到以下错误:“缺少论点”;“自我”;python中的错误,python,Python,我得到以下错误: TypeError: get_data() missing 1 required positional argument: 'self' 尝试从MySQL检索数据时: class test(mytest): start_urls = [] def __init__(self): self.create_connection() def create_connection(self): settings = g
TypeError: get_data() missing 1 required positional argument: 'self'
尝试从MySQL检索数据时:
class test(mytest):
start_urls = []
def __init__(self):
self.create_connection()
def create_connection(self):
settings = get_project_settings()
self.conn = mysql.connector.connect(
host = settings.get('MYSQL_SERVER'),
user = settings.get('MYSQL_USER'),
passwd = settings.get('MYSQL_PW'),
database = settings.get('MYSQL_DB'),
charset = 'utf8'
)
self.curr = self.conn.cursor()
self.curb = self.conn.cursor(buffered=True)
def get_data(self):
try:
self.curb.execute("SELECT ID FROM test")
results = self.curb.fetchall()
for row in records:
test.id = results[0]
self.curb.close()
except mysql.connector.Error as error:
print("Failed to fetch data - MySQL Error {}".format(error))
get_data()
print(test.id)
print(test.id)
我相信我没有完全理解self的概念,因为我是python初学者。有人能给我指出正确的方向吗?如果你像那样缩进get_data函数,它是测试类的一个方法,你应该向这个方法传递一些东西 例如:
类的实例。获取数据()
如果您不想将其作为测试类的方法,那么缩进是错误的,但是因为您在定义函数时传递了arg
def get_数据(自):
调用时,您仍需向其传递参数:
get_数据(ARG)
如果要在类中调用该类的任何方法,需要如下调用:
类测试:
定义初始化(自):
'''
创建连接并在创建类的实例时获取数据
'''
self.create_connection()
self.get_data()
通常,您会在类的实例上调用类的方法,如下所示:
类测试:
定义初始化(自):
self.create_connection()
test_instance=test()
数据=测试\实例。获取\数据()
另外,类的名称通常是这样大写的:Test
如果您想更多地了解python中的类,请随时查看以下资源:
看起来您试图定义一个方法,但它不在您的类中。要调用一个方法,需要使用该类的一个实例。没错,这是我为此创建的一个最小示例。我的原始代码是正确缩进的。如果你知道示例代码与实际代码有不同的问题,那么发布示例代码有什么意义呢?这不是问题。缩进会导致问题。你还需要在一个类的实例上调用get_data()-如果这个函数在一个类中,那么就创建一个并使用它,这就是self的意思,它是正在使用的类的当前实例。啊,我们在缩进方面仍然有问题,get_data()是对一个类方法的调用,而不是对一个类的实例的调用…听起来合乎逻辑,但是我仍然得到了错误:“namererror:name'self'没有定义”@merlin你是对的。只能在类内的方法或类外的类实例中使用
self.get_data()
。我编辑了我的答案,以显示执行get\u data()
的两种方式。