原始类结构如下所示:
class PyLibMCCache(BaseMemcachedCache):
class BaseMemcachedCache(BaseCache):
我创建了一个名为BaseTagsMemcachedCache
的附加功能的类,它派生自BaseMemcachedCache
,如下所示:
class BaseTagsMemcachedCache(BaseMemcachedCache):
是否可以创建与PyLibMCCache
相同的新类(例如,具有相同的方法和属性),但以BaseTagsMemcachedCache
为基类?我使用Mixin(BaseTagsCacheMixin
)作为解决方法,但我认为可能有更好的解决方案。
答案 0 :(得分:2)
您可以创建一个具有相同属性但具有不同基类的新类型,如下所示:
PyLibMCTagsCache = type("PyLibMCTagsCache",
(BaseTagsMemcachedCache,),
vars(PyLibMCCache))
但是,这对我来说似乎相当复杂。我可能会选择更直接的设计。
答案 1 :(得分:1)
你在谈论multiple inheritance吗?是的,您可以定义:
class NewBaseTagsMemcachedCache(BaseTagsMemcachedCache, PyLibMCCache):
请记住,从左到右的规则适用于Python。
答案 2 :(得分:1)
Python类可以有多个继承。这会为你做吗?