donde me gustaria que MyClass pudiese decidir si quiere heredar de
Base1 o de Base2... si es que eso es posible.
Las primeras respuestas que recibi parecian indicar que con una
Factory era trivial, pero la verdad es que no he sido capaz
:)faq.wikidot.com/
Por curiosidad lo he intentado. No se si es muy recomendable hacer esto,
pero parece que funciona:
class Base1(object):
def __init__(self):
print "Base1.init"
class Base2(object):
def __init__(self):
print "Base2.init"
class MyClass(object):
def __new__(cls, x):
base = None
if x==1: base = Base1
elif x==2: base = Base2
if base is None: return object.__new__(cls)
clase = type('MyClass', (MyClass, base, object), {})
return super(MyClass, clase).__new__(clase)
def __init__(self, x):
self.x = x
print "Myclass.init"
super(MyClass, self).__init__()
for x in range(0,3):
a = MyClass(x)
print str(x), str(a), a.__class__.__bases__
SALIDA:
>>>
Myclass.init
0 <__main__.MyClass object at 0x040FB6B0> (<type 'object'>,)
Myclass.init
Base1.init
1 <__main__.MyClass object at 0x040FBAF0> (<class '__main__.MyClass'>,
<class '__main__.Base1'>, <type 'object'>)
Myclass.init
Base2.init
2 <__main__.MyClass object at 0x041001D0> (<class '__main__.MyClass'>,
<class '__main__.Base2'>, <type 'object'>)
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/