몽키 패치

몽키 패치(monkey patch)는 컴퓨터 프로그래밍에서 런타임 시 코드 조각의 동작을 동적으로 업데이트하는 데 사용되는 기술이다. 원본 소스 코드를 변경하지 않고 스몰토크, 자바스크립트, 오브젝티브-C, 루비, 펄, 파이썬, 아파치 그루비, 리스프와 같은 동적 언어의 런타임 코드를 확장하거나 수정하는 데 사용된다.

용어
몽키 패치라는 용어는 런타임에 코드를 은밀하게 변경하는 것을 의미하는 게릴라 패치(다른 패치와 호환되지 않을 수도 있음)에서 유래한 것으로 보인다. 고릴라와 거의 동음이의어인 게릴라라는 단어는 패치(patch)가 덜 위협적으로 들리도록 하기 위해 원숭이, 즉 몽키(monkey)가 되었다.

또 다른 어원은 코드를 "멍킹하는 것(monkeying about)", 즉 "코드에 장난을 치는 것"을 의미한다는 것이다.

이름에서 알 수 있듯이 "몽키 패치"는 때때로 프로그램을 확장하는 공식적인 방법이다. 예를 들어, 파이어폭스 및 인터넷 익스플로러와 같은 웹 브라우저는 이를 장려했지만 이제 최신 브라우저(파이어폭스 포함)에는 공식 확장 시스템이 있다.

정의
용어의 정의는 해당 용어를 사용하는 커뮤니티에 따라 다르다. 루비, 파이썬 및 기타 여러 동적 프로그래밍 언어에서 몽키 패치라는 용어는 런타임 시 클래스나 모듈의 동적 수정만을 의미하며, 이는 버그나 기능에 대한 해결 방법으로 기존 타사 코드를 패치하려는 의도에서 비롯되었다. 원하는 대로 행동하지 마세요. 런타임 시 클래스를 수정하는 다른 형태는 의도에 따라 이름이 다르다. 예를 들어 Zope 및 플론에서는 보안 패치가 동적 클래스 수정을 사용하여 제공되는 경우가 많지만 이를 핫픽스라고 한다.

 예시 
>>> import math
>>> math.pi
3.141592653589793
>>> math.pi = 3.2   # monkey-patch the value of Pi in the math module
>>> math.pi
3.2
================================ RESTART ================================
>>> import math
>>> math.pi
3.141592653589793
>>>

 같이 보기 
 폴리필 (프로그래밍)
 관점 지향 프로그래밍
 오브젝티브-C
 동적 적재
 자체 수정 코드

 각주 

분류:객체 지향 프로그래밍
분류:프로그래밍 구성체