2014-03-29 1 views
0

재 게시 인 경우 전 사과드립니다. 나는 일반적인 "표준화"가 있는지 궁금확인 방법 클래스 속성 또는 메소드가 존재합니다

if 'methodName' in dir(myClassInstance): result=myClassInstance.methodName() 

을 : 나는 현재 클래스의 속성 (또는 방법)에 액세스하기 전에 존재하는지 확인하기 위해 다음과 같은 "자기 발명"검증 방법을 사용하고 같은 일을하는 방법.

+0

중복 가능성 [객체 파이썬에서 속성을 가지고 있는지 알고하는 방법 (http://stackoverflow.com/questions/610883/object-has-an-python에있는 object-has-an-a-know-know) – DNA

답변

1

hasattr을 사용하십시오. 주어진 객체가 속성으로 지정된 이름, 다른 False이있는 경우 그것은 True를 반환

if hasattr(myClassInstance, 'methodName'): 
    ... # Whatever you want to do as a result. 
+0

고마워요! dir (myClassInstance)에서 'methodName'을 계속 사용하면 부작용이 있다고 생각합니까? "신뢰성있는"hasattr()은 얼마나 더 낳았습니까? – alphanumeric

+0

쿨, 고마워! 수락 됨! – alphanumeric

+0

@Sputnix 불행하게도, 15 분 정도 기다려야 만 가능합니다. :) –

2

hasattr(myClassInstance, 'methodName')을 사용하십시오. 당신이 당신이 체크를하고있는 이유에 따라 처리 할 것입니다 방법

try: 
    myClassInstance.methodName() 
except AttributeError: 
    # do what you need to do if the method isn't there 

, 그것은 어떻게 일반적이다 : 그것은이 있다면

또 다른 가능성은 그냥 접근을 시도하고 예외를 처리하는 것입니다 객체가 그 속성을 가지고 있지 않은지, 그리고 그것이 없으면 당신이하고 싶은 것.

관련 문제