我是一位老式的Pascal程序员,是OOP和Python的新手,所以请耐心等待......我有一本关于Python的书,我先在这里搜索过(虽然很多类似的线程 - 不是检查每一个)...
我正在尝试编写一个程序,以包含我公司其他人编写的现有模块。根据我的Python书,我应该能够导入整个模块或只是特定的类。该书说,当使用'import'时,它实际上运行指定的代码(不像我在Pascal中习惯的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"
当我执行'python test.py'时,我收到错误消息:
'with self.db as handler' - invalid syntax
我想我在这里缺少一些基本的东西,所以任何帮助都非常赞赏。
答案 0 :(得分:2)
在Python 2.5中,with语句默认不可用。但它就在那里! :-)尝试添加
from __future__ import with_statement
到您的mod.py或使用Python 2.6 +。
答案 1 :(得分:2)
您修改了错误消息,但我认为它看起来像
File "mod.py", line 8
with self.db as handler:
^
SyntaxError: invalid syntax
这意味着您的Python版本太旧而无法知道with
statement。更新到支持python 2.6 +。
在Python 2.5中,您还可以在mod.py
的顶部添加__future__
declaration,如下所示:
from __future__ import with_statement
答案 2 :(得分:0)
鉴于该行看起来是什么样的,错误是语法错误,我会查看它之前的行,并寻找无与伦比的大括号或引号。