2015-01-08 3 views
0

나는 SMTP를 통해 이메일을 받아 들여야한다. 왜냐하면 이것은 파이썬에서 SMTPD Lib을 사용하기로 결정했기 때문이다. SMTPChannel 클래스가 있습니다.이 클래스에 메소드를 추가 할 수 있습니까? 오히려 그것을 확장 할 필요는 없지만 내 메서드가로드 될 때 수행 할 작업을 수행하십시오.Python 클래스에 사용자 정의 메서드를 추가하는 방법은 무엇입니까?

+2

이 주제 및 관련 주제 (예 : 객체 인스턴스에 메소드 추가하기)에 대한 광범위한 토론은 다음 게시물을 참조하십시오. http://stackoverflow.com/questions/972/adding-a-method-to-an -existing-object – zehnpaard

답변

3

메서드를 포함하여 런타임에 구성원에게 동적으로 멤버를 추가 할 수 있습니다. 당신은 별도로 함수와 메소드를 정의하고 방법과 유형을 확대해야합니다

def someMethod (self): 
    # do something with self 

SMTPChannel.someMethod = someMethod 

그 후, 형 SMTPChannel의 모든 객체가 그 메소드에 액세스 할 수 있습니다.

두 개의 밑줄로 시작하는 멤버에 대한 mangling Python의 이름에는이 작업을 수행 할 수 없습니다. 따라서 실제로 할 수있는 것은 없습니다. SMTPChannel 개체를 "외부"으로 처리 할 수 ​​없습니다.

+0

이 파이썬은 언제'를 말합니까? : SMTPChannel 인스턴스에는 '__greeting'속성이 없습니다. 이 attr은 실제로 클래스에 존재합니다. – user1692333

+0

@ user1692333 그것이 바로 제가 마지막 단락에서 언급 한 것입니다. – poke

+0

오, 미안 해요, 어떻게 든 그리워하지 ... – user1692333

관련 문제