동적 속성을 추가하는 일반 클래스가 있고 인스턴스에 동적으로 메서드를 추가 할 수 있습니다. 특정 인스턴스에는 다른 메서드가 있지만 이러한 메서드에 액세스해야합니다. 동적 속성.동적으로 추가 된 함수에 동적으로 추가 된 속성에 액세스하는 방법
어떻게하면됩니까?
class GenericComponent:
def __init__(self, ID):
self.ID = ID
@classmethod
def addMethod(cls, func):
return setattr(cls, func.__name__, types.MethodType(func, cls))
내 논리에서
, 내가 다른 인스턴스에 대해 내가 같은 방법으로 이름이 있도록 내가 이런 걸 가지고 이러한 일반적인 구성 요소를 구축으로하지만, 내부의 논리는 다르다. 내가 obj.toString()
를 호출 할 때
if t==0:
def toString(target):
print "toString: ", target
attrs = vars(target)
print ', '.join("%s: %s" % item for item in attrs.items())
obj = GenericComponent(ID)
obj.ID = ID
obj.name = "some random name"
obj.addMethod(toString)
obj.toString()
는 불행히도 당신은
addMethod
클래스 메소드했습니다
obj.name
아침에 그것을 시도 할 것이다. 고맙습니다. 동료는 obj.name 대신 obj.getattr ("name")을 사용하는 것이 좋을 수 있다고 제안했습니다. 기본적으로 저는 우리가 어떻게 문제를 해결할 지 모르는 프로젝트를 진행하고 있습니다. 그리고 내가 정의 된 클래스를 동적으로 사용하지 않고 특정 디자인에 고정시킬 수도 있습니다. 매우 역동적이어서 어떤 디자인에도 빠지지 않습니다. –