Ich schreibe eine Klasse für den Zugriff auf eine MySQL-Datenbank von Python.Python - kann nicht auf Klasseneigenschaft zugreifen
Hier ist der Code:
#!/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()
Wenn ich versuche, um die Klasse zu nennen, es gibt mir die folgende Fehlermeldung:
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
Ich habe Menschen auf der Suche und häufig gibt es, die vergessen um die Methode mit 'self' als Argument zu definieren. Aber ich schließe es ein.
Konnte mir jemand helfen?
Danke.
UPDATE:
Ich habe Leerzeichen und Tabulatoren und das ist nicht das Problem.
Ich bin sicher, dass Leerzeichen nicht das Problem sind. – Ign
@Ign: Die Bearbeitungsansicht zeigt deutlich Registerkarten und Leerzeichen, die so gemischt sind, dass sie diesen Fehler verursachen, und das Traceback zeigt deutlich, dass die 'self.res'-Zuweisung außerhalb jeder Methode liegt. Sind Sie sicher, dass Sie wissen, wonach Sie suchen sollen? Wenn Sie nur den Einzug der gerenderten Version Ihrer Frage überprüft haben, beachten Sie, dass das Markdown-Rendering Tabulatoren in Leerzeichen konvertiert. Überprüfen Sie Ihre tatsächliche Quelldatei. – user2357112