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

は、私が検索してきたと一般的に忘れて人々があります'self'を引数としてメソッドを定義します。しかし私はそれを含めています。

誰でもお手伝いできますか?

ありがとうございました。

UPDATE:

私は空白とタブをチェックし、それは問題ではありません。

答えて

5

あなたのコードにはタブとスペースが混在しているため、インデントレベルでどのステートメントが混乱しているのかPythonは混乱します。 self.resへの割り当ては、クラスレベルで終了しました。これはメソッドの一部ではないことを意図していました。

タブとスペースの混合を停止します。エディタで「空白を表示」をオンにして問題をより目立たせ、タブとスペースのあいまいな混合についてエラーを返すには、-ttフラグを付けてPythonを実行することを検討してください。

+0

空白が問題ではないことを確かめています。 – Ign

+1

@Ign:編集ビューには、このエラーを引き起こすような方法でタブとスペースが混在していることが明確に示されています。トレースバックには、 'self.res'の割り当てがどのメソッドの外にもあることがはっきりと示されています。あなたは何を探すべきかを知っていますか?レンダリングされたバージョンの質問の字下げだけを確認した場合は、マークダウンレンダリングがタブをスペースに変換することに注意してください。実際のソースファイルを確認してください。 – user2357112

関連する問題