¿Es posible hacer herencia parcial con Python?

Estoy creando una clase (class0) en Python que actualmente se basa en una clase (class1); sin embargo, también me gustaría heredar de otra clase (clase 2). Lo que pasa con class2 es que no quiero todos sus métodos y atributos, solo necesito un método único. ¿Es posible que class0 solo herede un solo método de una class2?

El método “mixin” de tener otra clase que simplemente implemente el método que desea es lo correcto en este caso. Pero en aras de la integridad, ya que responde exactamente a lo que está preguntando, agrego que sí, es posible tener un comportamiento como la “herencia parcial” que desea (pero tenga en cuenta que tal concepto no existe formalmente).

Todo lo que hay que hacer es agregar un miembro en la nueva clase que haga referencia al método o atributo que desea repetir allí:

class Class2(object): def method(self): print ("I am method at %s" % self.__class__) class Class1(object): pass class Class0(Class1): method = Class2.__dict__["method"] ob = Class0() ob.method() 

Tenga en cuenta que en Python 2.x (hasta 2.7) es necesario recuperar el método de la clase __dict__ , debido a las transformaciones en tiempo de ejecución que se realizan para convertir la función en un método. En Python 3.0 y superior, solo cambia la línea

 method = Class2.__dict__["method"] 

a

 method = Class2.method 

Un camino es utilizar el enfoque ‘mixin’:

 class Mixin(object): def method(self): pass class C1(Mixin, ...parents...): pass class C2(Mixin, ...parents...): pass 

Otra forma es la composición:

 class C1(object): def method(self): pass class C2(object): def __init__(self): self.c1 = C1() def method(self): return self.c1.method() 

¿Por qué no usas la composición en su lugar? Haga que su clase guarde una referencia al objeto deseado y delegue en él.

cree otra clase base implementando este método y haga que class2 y class1 hereden esta clase