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に追加するか、Python2.6以降を使用します。

于 2012-05-03T14:05:16.780 に答える
2

エラーメッセージを変更しましたが、次のようになっていると思います

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

これは、Pythonのバージョンが古すぎてwithステートメントを認識できないことを意味します。Python2.6以降をサポートする実装に更新します。

Python 2.5では、次のように、の上部に__future__宣言を追加することもできます。mod.py

from __future__ import with_statement
于 2012-05-03T14:05:44.373 に答える
0

その行がどのように見えるか、およびエラーが構文の1つであることを考えると、その前の行を調べて、一致しない中括弧または引用符を探します。

于 2012-05-03T14:06:42.910 に答える