是否有可能在Python中创建一个复制某个类的功能的类,但更改它的基类?

时间:2012-03-05 15:32:11

标签: python

原始类结构如下所示:

class PyLibMCCache(BaseMemcachedCache):
class BaseMemcachedCache(BaseCache):

我创建了一个名为BaseTagsMemcachedCache的附加功能的类,它派生自BaseMemcachedCache,如下所示:

class BaseTagsMemcachedCache(BaseMemcachedCache):

是否可以创建与PyLibMCCache相同的新类(例如,具有相同的方法和属性),但以BaseTagsMemcachedCache为基类?我使用Mixin(BaseTagsCacheMixin)作为解决方法,但我认为可能有更好的解决方案。

3 个答案:

答案 0 :(得分:2)

您可以创建一个具有相同属性但具有不同基类的新类型,如下所示:

PyLibMCTagsCache = type("PyLibMCTagsCache", 
                        (BaseTagsMemcachedCache,),
                        vars(PyLibMCCache))
但是,这对我来说似乎相当复杂。我可能会选择更直接的设计。

答案 1 :(得分:1)

你在谈论multiple inheritance吗?是的,您可以定义:

class NewBaseTagsMemcachedCache(BaseTagsMemcachedCache, PyLibMCCache):

请记住,从左到右的规则适用于Python。

答案 2 :(得分:1)

Python类可以有多个继承。这会为你做吗?