본문 바로가기
파이썬

파이썬 Python에서 동적 / 런타임 메서드 생성 (코드 생성)

by º기록 2020. 10. 7.
반응형

런타임에 메서드에 대한 코드를 생성해야합니다. 임의의 코드를 실행하고 독 스트링을 가질 수 있어야합니다.

exec setattr 을 결합한 솔루션을 생각해 냈습니다. 여기에 더미 예제가 있습니다.

class Viking(object):
    def __init__(self):
        code = '''
            def dynamo(self, arg):
                """ dynamo's a dynamic method!
                """
                self.weight += 1
                return arg * self.weight
            '''
        self.weight = 50

        d = {}
        exec code.strip() in d
        setattr(self.__class__, 'dynamo', d['dynamo'])


if __name__ == "__main__":
    v = Viking()
    print v.dynamo(10)
    print v.dynamo(10)
    print v.dynamo.__doc__

동일한 결과를 얻는 더 좋고 / 안전하고 / 더 관용적 인 방법이 있습니까?

 

해결 방법

 

Theran의 코드를 기반으로하지만 클래스의 메서드로 확장합니다.

인쇄해야하는 항목 :

 

참조 페이지 https://stackoverflow.com/questions/533382

 

 

반응형

댓글