2012-05-03 2 views
0

저는 OOP와 Python에 익숙하지 않은 구식 파스칼 프로그래머입니다. 제발 ... 저에게 파이썬에 관한 책이 있습니다. 비슷한 스레드 - 모두 체크하지 않음) ...구문 오류가 발생하는 Python 가져 오기

내 회사의 다른 사람들이 작성한 기존 모듈을 포함하는 프로그램을 작성하려고합니다. 필자의 파이썬 서적에 따르면 전체 모듈 또는 특정 클래스 만 가져올 수 있어야합니다. 이 책은 '가져 오기'가 사용될 때 실제로 파스칼에서 익숙하지 않은 INHERIT과는 달리 지정된 코드를 실행한다고 말합니다.

내가 모듈에서이 구조를 가지고, mod.py, 내가 사용하려는 :

from x.y.z import stuff 

class c1(superclass): 
    def func1(self): 
     .... 
    def func2(self, db): 
     .... 
     with self.db as handler: 
      .... 

을하고 난 그냥이 수행하는 기본 스크립트 test.py,있어 :

from mod import c1 

print "Hello" 

'with self.db as handler' - invalid syntax 

나는 그녀의 근본적인 뭔가를 놓친 것 같아 : 나는 '파이썬 test.py'를 실행할 때

, 나는 오류 메시지가 전자, 그래서 어떤 도움을 많이 주셔서 감사합니다.

+0

'self.db'가 [컨텍스트 관리자 프로토콜] (http://docs.python.org/reference/datamodel.html#context-managers)을 구현하지 않았거나 그렇지 않습니까? –

+0

이 구문을 사용하기에는 너무 오래된 파이썬 일 수 있습니다. 파이썬 2.4는 아직 일부 프로덕션 환경에 있습니다. 어떤 버전입니까? –

+0

오류가있는 경우 with 문을 따옴표로 묶는 것이 좋습니다. 맞습니까? 어떤 버전의 파이썬을 사용하고 있습니까? 질문을 'mod.py' –

답변

2

당신은 오류 메시지를 수정,하지만 난이 파이썬 버전이 with statement을 알고 너무 오래되어 있음을 의미

File "mod.py", line 8 
    with self.db as handler: 
     ^
SyntaxError: invalid syntax 

것 같습니다 가정합니다. Python 2.6 이상을 지원하는 구현으로 업데이트하십시오.

파이썬 2.5에서는이 같은 mod.py의 상단에 __future__ declaration을 추가 할 수 있습니다

from __future__ import with_statement 
+0

그래, 그게 내 실수 야. 흠, 사용 환경을 제공 받았고 버전 설치에 대한 제어권이 없습니다. 오래된 버전이 제공되는 것이 이상하게 보일 것이지만 그 모습을 살펴 보겠습니다 ... 많은 감사드립니다 ... – Nelmo

+0

OK <나는 단지 2.4를 가지고있다 ... 그것을 변화 시키려고 노력할 것이다 - 다시 한번 많은 감사 ... – Nelmo

2

파이썬 2.5에서 with 문은 기본적으로 사용할 수 없습니다. 그러나 그것은 거기에있다! :-) 2.6+ 당신의 mod.py에

from __future__ import with_statement

를 추가하는 시도하거나 파이썬을 사용합니다.

+0

새내기 질문 - 내가 가진 버전을 어떻게 알 수 있습니까? (나는 리눅스 서버에있다.) – Nelmo

+0

Ahh, v2.4.3을 발견했다. 아주 오래된 소리 ... – Nelmo

0

그 라인이 오류가 구문 하나 인 추천하고, 내가보고 싶은데 보이는 것을 감안할 때 그것을 앞에 놓고 일치하지 않는 괄호 나 따옴표를 찾으십시오.

관련 문제