Hola,
por una seria de razones (llamémosle exigencias del guión"), tenga una
jerarquía de clases heredadas unas de otras.
Una version simplificada del código es [1].
-- Necesito que la clase con la que voy a trabajar, MyClass_1, sea un
"singleton" y a la vez un "thread".
-- Al mismo tiempo esa clase debe tener una interfaz que se define en
Local_Interface_1
-- Y es importante que se sepa si los objetos de esa clase son creados de
forma adecuada o no.
Para asegurarme de ello, he intentado que la clase "madre de todas las
clases", Globa_Interface,
obligue a la implementación de un método initialize() y en su __init__() se
comprueba si un atributo self.valid es True o False.
Obtengo este error [2].
Por lo que he podido "debuggear" parece ser que con esta jerarquía de
clases la línea threading.Thread.__init__(self) nunca llega a ejecutarse.
¿Alguna idea de la razón?
Muchas gracias por adelantado. Cualquier comentario será bienvenido.
Jose
=====================================================
[1]
class Singleton(type):
def __init__(cls, name, bases, dct):
cls.__instance = None
type.__init__(cls, name, bases, dct)
def __call__(cls, *args, **kw):
if cls.__instance is None:
cls.__instance = type.__call__(cls, *args,**kw)
return cls.__instance
---------------------------------------------------------------------------------------------------
class Global_Interface(object):
def __init__(self, *k, **kw):
self.valid = True
try:
self.initialize(*k, **kw)
except:
self.valid = False
def initialize(self, *k, **kw):
raise NotImplementedError
---------------------------------------------------------------------------------------------------
class Local_Interface_1(Global_Interface):
def f(self):
raise NotImplementedError
class Local_Interface_2(Global_Interface):
def g(self):
raise NotImplementedError
---------------------------------------------------------------------------------------------------
class MyClass_1(threading.Thread, Local_Interface_1):
__metaclass__ = Singleton
def initialize(self, x, y):
threading.Thread.__init__(self)
self.x = x
self.y = y
... otras operaciones de inicializacion...
self.valid = True
def f(self):
... blah blah ...
=====================================================
[2]
File "/usr/lib64/python2.4/threading.py", line 378, in __init__
assert group is None, "group argument must be None for now"
AssertionError: group argument must be None for now
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/