I am given a designated factory of A
-type objects. I would like to make a new version of A
-type objects that also have the methods in a Mixin
class. For reasons that are too long to explain here, I can't use class A(Mixin)
, I have to use the A_factory
. Below I try to give a bare bones example.
I thought naively that it would be sufficient to inherit from Mixin
to endow A
-type objects with the mixin methods, but the attempts below don't work:
class A: pass
class A_factory:
def __new__(self):
return A()
class Mixin:
def method(self):
print('aha!')
class A_v2(Mixin): # attempt 1
def __new__(cls):
return A_factory()
class A_v3(Mixin): # attempt 2
def __new__(cls):
self = A_factory()
super().__init__(self)
return self
In fact A_v2().method()
and A_v3().method()
raises AttributeError: 'A' object has no attribute 'method'
.
What is the correct way of using A_factory
within class A_vn(Mixin)
so that A
-type objects created by the factory inherit the mixin methods?