Метод «mixin», включающий другой класс, который просто реализует нужный метод, является правильным решением в этом случае.Но ради полноты, так как он отвечает именно на то, что вы спрашиваете, я добавляю, что да, возможно иметь поведение, подобное желаемому «частичному наследованию» (но обратите внимание, что такая концепция не существует формально).
Все, что нужно сделать, это добавить члена в новый класс, который ссылается на метод или атрибут, который вы хотите там повторить:
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()
Обратите внимание, что получение метода из класса __dict__
требуется в Python 2.x (до 2.7) - из-за преобразований во время выполнения, которые сделаны для преобразования функции в метод.В Python 3.0 и выше просто измените строку
method = Class2.__dict__["method"]
на
method = Class2.method