Python全局/包别名实现类

时间:2011-05-24 15:47:47

标签: python python-2.7

我有一种奇怪的感觉,这是一个简单的问题。

我希望能够“别名”一个类类型,这样我就可以在包级别换出实现。我不希望在我的代码中分散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)

2 个答案:

答案 0 :(得分:5)

在任何文件中(最适合您的文件,可能取决于Implementation的定义):

BaseClassProxy = Implementation

由于类是Python中的第一类对象,因此几乎可以将它们绑定到任何变量并以相同的方式使用它们。在这种情况下,您可以为该类创建别名。

答案 1 :(得分:2)

只需添加类似

的内容
BaseClassProxy = Implementation

在模块中,然后执行:

from module import BaseClassProxy