0

プログラムがPythonで別のプログラムを呼び出す方法はありますか?

私の問題を説明させてください:

  1. 私はアプリケーション(プログラム1)を構築しています 。また{ a typical try : except: }、コードのプログラム1ブロックで例外(プログラム2)をキャッチするデバッガーも作成しています。ここで、プログラム2をリリースして、prog 1のようなアプリケーションで、prog 2が例外を処理できるようにします(作業が簡単になります)。私はprog1に次のような単純なコードを使用させたいだけです。

    import prog2
    
  2. 私の混乱は、このようなことをどのように行うことができるか、prog1でprog2を呼び出すことができるか、つまり、prog1のすべてのコードがprog2try{try: (prog 1) , except:}ブロックで実行されるように機能する必要があるという事実から生じています。

私がこれをどのように行うことができるか、または開始する方向についてのポインタがあれば、私たちは非常に感謝します。

注:開発者ツールとしてPython2.7とIDLEを使用しています。

4

2 に答える 2

1

execfile()まだ試しましたか?スクリプトから別のスクリプトを実行する方法について読んでください。

于 2012-10-19T18:15:22.270 に答える
1

スクリプトではなくクラスについて考える必要があると思います。

これはどうですか?

class MyClass:
    def __init__(self, t):
        self.property = t
        self.catchBugs()

    def catchBugs(self):
        message = self.property
        try:
            assert message == 'hello'
        except AssertionError:
            print "String doesn't match expected input"


a = MyClass('hell') # prints 'String doesn't match expected input'

アップデート

ディレクトリに次のようなものがあると思います:

  • program1.py(メインプログラム)
  • program2.py(デバッガ)
  • __init__.py

プログラム1

from program2 import BugCatcher

class MainClass:    
   def __init__(self, a):       
      self.property = a


obj = MainClass('hell') 
bugs = BugCatcher(obj)

プログラム2

class BugCatcher(object):
    def __init__(self, obj):
        self.obj = obj
        self.catchBugs()

    def catchBugs(self):
        obj = self.obj
        try:
            assert obj.property == 'hello'
        except AssertionError:
            print 'Error'

ここでは、program1 のオブジェクト全体を program2 の BugCatcher オブジェクトに渡しています。次に、そのオブジェクトのプロパティにアクセスして、期待どおりであることを確認します。

于 2012-10-19T18:22:53.533 に答える