2013-10-09 2 views
0

다른 클래스의 상수를 동적 변수로 전달하고 싶습니다.파이썬 액세스 다른 클래스의 상수

import A 
class B: 
    def makeAchoice(): 
     instanceA = A() 
     instanceA.setMatchType(instanceA.MATCH_ANY) 

는 그러나, 나는 makeAchoice에 변수를 추가 할 다른 파일에서

class A: 
    MATCH_ALL = 0 
    MATCH_ANY = 1 
    MATCH_NON = 3 

    def setMatchType(matchType): 
     assert(type in [MATCH_ALL, MATCH_ANY, MATCH_NON]) 
     print type 

, 그래서 setMatchType 값은 동적 일 수있다.

import A 
class B: 
    def makeAchoice(matchType=MATCH_ANY): 
     instanceA = A() 
     instanceA.setMatchType(?) 

어떻게 변수를 상수로 전달합니까? 위?

getattr (instanceA, matchType) 그래서 먼저 상수에 액세스 할 수 있지만 작동하지 않는 것 같습니다.

+0

, 왜 그냥 직접 선언하거나에서 가져 오기 일반적인 장소? – leon

답변

1

당신은 A.CONSTANT_NAME에 액세스 :

여러 클래스에 상수를 사용하고 있고 네임 스페이스에서 그들을 유지하지 않으려면
import A 
class B: 
    def makeAchoice(matchType=A.MATCH_ANY): 
     instanceA = A() 
     instanceA.setMatchType(A.MATCH_ANY) 
+0

하지만 makeAchoice somehwhere를 사용할 때 makeAchoice (A.MATCH_ANY)와 같은 A 클래스 이름을 지정해야합니까? – user1377324

+0

예. 항상 상수에 액세스 할 때마다 A.MATCH_NON 등을해야합니다. 그렇게하고 싶지 않으면'Apy'에 정의해야하지만'class A :'의 바깥에 정의해야합니다. –

+0

나는 A의 인스턴스 중 하나에서 상수에 접근 할 수 있다고 생각했다.하지만 방금 메소드를 실행하기위한 인스턴스를 인식했고 이미 A를 가져왔다. – user1377324