Skip to main content
 首页 » 编程设计

python之Python 中的参数计数语法错误

2025年05月04日15hnrainll

我在尝试创建联合表生成器时遇到语法错误。

这是被冒犯的解释器:

Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
  File "federatedTableBuilder.py", line 7, in <module> 
     local_public_files.generate() 
  File "localViewDefinition.py", line 22, in generate 
    self.generate_for_host(conn) 
  File "localViewDefinition.py", line 17, in generate_for_host 
    self.conn.doQuery(rsaconn,self.query) 
TypeError: doQuery() takes exactly 2 arguments (3 given) 

和有问题的代码:

import mysql as sql 
from connector import Connector 
import io 
import traceback 
 
class LocalViewDefinition: 
 
    ...insert variables... 
 
    def doQuery(connection, query): 
        try: 
            cursor = MySQLdb.cursors.Cursor(connection) 
            cursor.execute(query) 
        except: #figure out how to handle generic and sql errors separately 
            traceback.print_exc() 

你知道原因吗?

请您参考如下方法:

对于类方法,Python 采用额外的第一个参数来引用类的实例。约定是使用单词 self:

def doQuery(self, connection, query): 
      try: 
          cursor = MySQLdb.cursors.Cursor(connection) 
          cursor.execute(query) 
      except: #figure out how to handle generic and sql errors separately 
          traceback.print_exc() 

这种引用类实例的要求是因为 Python 中“显式优于隐式”(参见 import this)。