2013-05-30 2 views
1

나는 더 큰 프로그램의 일부인 파일을 포함하고있는 파이썬 파일을 가지고있다. 즉, 사용 된 동일한 데이터를 생성하는 데 사용되는 파일이다.하지만이 프로그램을 사용하여 데이터를 얻는 동안 크고, 오래되었고, 문서화되지 않은 사람은 아무도 그것이 어떻게 작동 하는지를 알지 못합니다.파이썬에서 객체를 위장한 것

이 파일에 의해 생성 된 데이터를 처리해야합니다. 동적으로 호출하는 모듈을 모방하는 방법이 있습니다. 즉, 관심이있는 실제 메서드를 제공 한 다음 hasn 메서드 호출에 대한 가짜 응답을 제공합니다. 무시되었습니다.

나는

답변

2

가 쉽게 단지 메소드를 추가하지가 (이 실수로 삭제했기 때문에 난 더 이상 사용할 수있는 소스가없는)을 __getattrib__ 메서드를 재정으로이 일을 시도했지만, 끔찍하게 실패 그게 뭐라고?

예, 예 : Mock 라이브러리로 가짜로 만들 수 있습니다.

+0

내가 모의 라이브러리 덕분에보고해야합니다 파일에 파일 동안 같은 약간 다른라는 방법이 Bickerx2 @ –

+0

잘 모르겠어요으로 더 슬프게 그것은 변화를하지 않을 것이다되지 않는다 그것들은 약간 다릅니다. Mock 라이브러리는 응답을 가짜로 만들지 만 호출자가 실패하지 않도록 가짜를 말해야 할 가능성이 큽니다. –

+0

모의 라이브러리가 실제로 여기 해결책 일 수 있다고 생각합니다. 그렇지 않으면 파일을 심각하게 변경 한 다음 정규식을 수행해야합니다 (잠재 고객이 기대하지 않습니다). –

0

할 수 있습니다하지 __getattribute____add__ 같은 가짜 기능을합니다.

당신은 예를 들어, 클래스 측을 구현하는 데 필요한 모든 방법을 찾을 수 있습니다

Here

__add__은 내가 Proxy that fakes에게 그들을 implemeted. 심지어 정수를 에뮬레이트 할 수 있습니다. 당신이 __getattribute__this 편리하게 사용할 수 있습니다 덮어하면

.

class X(object): 
    def __getattribute__(self, name): ... 

    def use_this_getattribute(self): 
     ... # uses getattribute from above 

    @objectGetattributeFunction 
    def use_original_getattribute(self): 
     ... 
+0

흥미로운 방법이지만 실제로 숨겨진 코드 (예 : 알려지지 않은 많은 부작용)가 얼마나 복잡한지를 고려하면 Mock을 지금 사용하고있을 것이라고 생각하지만 작동하지 않으면 다른 것을 무시할 수 있습니다. \ __ getattribute__ –

관련 문제