다른 모듈에서 사용할 객체의 동적 구현을 얻으려고합니다.Python에서 클래스 구현을 동적으로 반환하십시오.
는 그것은
get_implementation('Implementation1')
또는get_implementation('Implementation2')
로서 사용될 수있다.
목적은 쉽게 확장 할 수있는 코드입니다. 예를 들어 Implementation3
이라는 또 다른 클래스를 추가하여 핵심 기능을 변경하지 않고도 작동시킬 수 있습니다.
좋은 접근 방법이나 권장 사항입니까?
get_implementation(name):
if name:
return getattr(name)
class Base()
def __init__(self, args1, arg2, arg3, arg4....):
class Implementation1()
def __init__(self, *args):
class Implementation2()
def __init__(self, *args):
- 이 좋은 방법인가, 아니면 더 나은 옵션이 있나요?
- 이것은 Zope 프레임 워크 용입니다. 아마도이를 수행 할 수있는 API를 선택해야합니까?
Zope을 사용하면 구성 요소 레지스트리 (유틸리티 또는 어댑터)를 사용할 수 있지만 이는 유스 케이스에 따라 다릅니다. –
내가 그것을 선택해야하는지 또는 위와 같이 간단하게 유지해야하는지 궁금하십니까? Zope은 많은 기능을 가지고있는 것처럼 보입니다. 위의 코드에는 학습 곡선이 없습니다. Zope Component Registry에는 학습 곡선이 있습니다. 나와 내레이터 모두 – Nishant
하지만 Zope에서 수행하는 모든 작업에 대해 커브를 올라야합니다. :-) –