2016-08-11 5 views
-1

파이썬에서 mySQL db에 액세스하기위한 클래스를 작성하고 있습니다. 내가 검색 및 일반적 잊지 사람들이있어 왔습니다Python - 클래스 속성에 액세스 할 수 없습니다.

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 

:

나는 클래스를 호출하기 위해 노력하고있어
#!/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() 

, 그것은 나에게 다음과 같은 오류를 제공합니다 : 여기

코드입니다 'self'를 인수로 사용하여 메소드를 정의하십시오. 그러나 나는 그것을 포함시키고있다.

아무도 도와 줄 수 있습니까?

감사합니다.

업데이트 : 공백 및 탭을 확인하고는 문제가되지 않습니다

.

답변

5

코드에 탭과 공백이 섞여있어 어떤 문장이 들여 쓰기 수준에 있는지 혼란스럽게합니다. self.res에 대한 할당이 클래스 수준에서 끝났습니다. 메서드의 일부였습니다.

탭과 공백을 섞지 마십시오. 에디터에서 "show whitespace"를 켜서 문제를보다 잘 보이게하고, -tt 플래그로 파이썬을 실행하여 탭과 스페이스의 모호한 혼합에 오류를 발생시키는 것을 고려하십시오.

+0

공백 문자가 문제가 아닌지 확실합니다. – Ign

+1

@Ign : 편집보기는 탭과 공백이이 오류를 일으킬 수있는 방식으로 혼합되어 있음을 명확하게 보여 주며, traceback은'self.res' 할당이 어떤 메소드 외부에도 있음을 명확하게 보여줍니다. 당신은 무엇을 찾을 지 알고 있습니까? 렌더링 된 버전의 질문에 들여 쓰기를 선택한 경우에만 마크 다운 렌더링이 탭을 공백으로 변환합니다. 실제 소스 파일을 확인하십시오. – user2357112

관련 문제