0

我是一个老式的 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

我想我在这里遗漏了一些基本的东西,所以非常感谢任何帮助。

4

3 回答 3

2

在 Python 2.5 中,with 语句默认不可用。但它就在那里!:-) 尝试添加

from __future__ import with_statement

到您的 mod.py 或使用 Python 2.6+。

于 2012-05-03T14:05:16.780 回答
2

您已修改错误消息,但我认为它看起来像

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

这意味着您的 Python 版本太旧而无法识别该with语句。更新到支持 python 2.6+ 的实现。

在 Python 2.5 中,您还可以在 顶部添加__future__声明mod.py,如下所示:

from __future__ import with_statement
于 2012-05-03T14:05:44.373 回答
0

鉴于该行的外观和错误是语法错误,我会查看它之前的行并查找不匹配的大括号或引号。

于 2012-05-03T14:06:42.910 回答