2016-08-11 79 views
-1

我正在写一个类来访问python的mySQL数据库。Python - 无法访问类属性

下面的代码:

#!/usr/bin/python 

import MySQLdb 
import configparser 

class db(): 

    def __init__(self): 

     try: 
      self.handler = MySQLdb.connect(host="localhost", user=user, passwd=passwd, db=dbname) 
      self.cur = self.handler.cursor() 
     except: 
      print "Couldn't connect to db" 


    def query(self, query): 

     self.lastQuery = query 
     self.res = self.cur.execute(query) 

    def close(self): 

     self.handler.close() 

当我试图调用类,它给我下面的错误:

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "db.class.py", line 6, in <module> 
    class db(): 
File "db.class.py", line 25, in db 
    self.res = self.cur.execute(query) 
NameError: name 'self' is not defined 

我一直在寻找,并普遍有,就是忘记的人以“自我”为参数来定义方法。但我包括它。

任何人都可以帮助我吗?

谢谢。

UPDATE:

我检查空格和制表符,这是没问题的。

回答

5

您的代码混合了制表符和空格,导致Python对什么语句处于缩进级别感到困惑。 self.res的任务已经在课程级别完成,不属于它打算成为其一部分的方法。

停止混合标签和空格。打开编辑器中的“显示空白”以使问题更加明显,并考虑使用-tt标志运行Python,以便在制表符和空格混淆时发生错误。

+0

我很确定空格不是问题。 – Ign

+1

@Ign:编辑视图清楚地显示了制表符和空格混合在一起,导致这种错误,并且回溯清楚地表明'self.res'赋值超出了任何方法。你确定你知道要找什么吗?如果您只检查了问题渲染版本的缩进,请注意标记渲染会将制表符转换为空格。检查你的实际源文件。 – user2357112