0
importlib
& getattr
을 사용하여 클래스의 인스턴스를 동적으로 만듭니다. 그러나 아래에 제공된 Proxy.py
을 실행하면 생성자가 두 번 호출되고 중복 결과가 발생합니다. 미리 감사드립니다. (파이썬 3.6.1)클래스를 동적으로 인스턴스화 할 때 생성자가 두 번 호출됩니다.
결과
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()
에 대한 호출을 보호. –