0
importlib
& getattr
を使用して、クラスのインスタンスを動的に作成しています。しかし、私がProxy.py
を実行すると、コンストラクタが2回呼び出され、重複した結果が得られます。前もって感謝します。 (Pythonの3.6.1)クラスを動的にインスタンス化するときにコンストラクターが2回呼び出される
結果
inside Cproxy contructor
inside Cproxy read()
inside Cproxy contructor
inside Cproxy read()
Runner.py
import importlib
class Crunner:
def __init__(self, nameofmodule, nameofclass):
self.run(nameofmodule, nameofclass)
def run(self, nameofmodule, nameofclass):
module = importlib.import_module(nameofmodule)
class_ = getattr(module, nameofclass)
instance = class_()
instance.read()
Proxy.py
from Runner import Crunner
class Cproxy:
def __init__(self):
print("inside Cproxy contructor")
def read():
print("inside Cproxy read()")
Crunner("Proxy", "Cproxy")
おかげで迅速な解決や明確化のために再び@bruno desthuilliers:
Proxy
がスクリプトとして使用されているときに、それが唯一の実行だCrunner()
への呼び出しを守ります。 –