2016-08-11 66 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