Pythonクラス間の循環依存をどのように処理しますか?
Pythonクラス間の循環依存関係を示す次のコードがあります。
class P(): q = Q().do_something(); def do_something(self): pass class Q(): p = P().do_something(); def do_something(self): pass
クラスの場合、関数とは異なり、クラスの本体は定義時に実行されます。クラスPを定義するには、実際にQメソッドを呼び出す必要がありますが、クラスQがまだ定義されていないため、これを行うことはできません。
これを回避するには、クラスを定義し、後でプロパティを追加します-
class P(object): pass class Q(object): pass P.q = Q.do_something() Q.p = P.do_something()
各do_something呼び出しが、すでに実行されている他の呼び出しに依存している場合、これは機能しません。問題を解決するには、さらに変更を加える必要があります。
クラスのインスタンスを作成するときではなく、クラスを定義するときにクラスレベル(q =Q.do_something())のディレクティブが実行されるため、クラスにはこれらの問題があります。
両方のクラスが定義された後、後でクラスの定義を完了する場合があります。これは、Pythonが動的言語であることを証明しています。
-
Pythonで例外を処理する方法は?
Pythonで例外を処理する最も簡単な方法は、「try-except」ブロックを使用することです。 例 try: fob = open("test.txt", "r") fob.write("This is my test file for exception handling!!") except IOError: print "Error: can\'t find the file or read data" else: print "Write operation is performed
-
ループ内でPython例外を処理する方法は?
次のように書き直すことで、コードの例外を作成できます a=[] foo = 'redbullz' try: for i in foo: a.append(i) print a[8] except Exception as e: print e 次の出力が得られます list index out of range Process finished with exit code 0