2013-10-09 81 views
0

我想從另一個類傳遞CONSTANT作爲動態變量。python從另一個類訪問CONSTANT

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 

在另一個文件

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

不過,我想在makeAchoice添加變量,所以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時,是否需要指定A的類名,例如makeAchoice(A.MATCH_ANY)? – user1377324

+0

是的,無論您在哪裏訪問這些常量,您都需要執行'A.MATCH_NON'等操作。如果你不想這樣做,那麼你應該在'A.py'中定義它們,但是在'class A:'之外。 –

+0

我在想我可以從A的一個實例中訪問常量,但是我剛剛意識到只是運行該方法的實例,並且已經導入了A,謝謝! – user1377324