2011-05-24 67 views
1

我有這種奇怪的感覺,這是一個簡單的問題。Python全局/包別名實現類

我希望能夠「別名」一個類的類型,所以我可以在包級別換出實現。我不想要X量的import X as bah分散在我的代碼中...

又名。我怎麼可以這樣做以下:

class BaseClass(object): 
    def __init__(self): pass 
    def mymthod(self): pass 
    def mymthod1(self): pass 
    def mymthod2(self): pass 

class Implementation(BaseClass): 
    def __init__(self): 
     BaseClass.__init__() 

單獨包...

#I dont want thse scattered through out modules, 
#i want them in one place where i can change one and change implementations 
#I tried putting it in the package init but no luck 
import Implementation as BaseClassProxy 


class Client(BaseClassImpl): 
    def __init__(self): 
     BaseClassImpl.__init__(self) 

回答

5

在任何文件(其中,這符合最好是你的,只要可能被Implementation定義):

BaseClassProxy = Implementation 

由於類是Python中的第一類對象,因此幾乎可以將它們綁定到任何變量並以相同的方式使用它們。在這種情況下,您可以爲課程製作一個別名。

+0

完美的作品,但我要指出,你需要導入從以往任何時候都在「類/別名」定義。再次感謝。 – Nix 2011-05-24 16:05:53

2

只是把像

BaseClassProxy = Implementation 

模塊中,然後執行:

from module import BaseClassProxy