patron singleton
Xin
xinxic en gmail.com
Vie Sep 7 08:28:41 CEST 2007
Quizà otro ejemplo te ayude un poco.
Este añade la propiedad XXX a partir de las funciones _get_XXX o
_set_XXX
http://www.python.org/download/releases/2.2.3/descrintro/
Por cierto sabeis si se puede indicar más de una metaclasse?
__metaclass__ = autoprop, singleton
class autoprop(type):
def __init__(cls, name, bases, dict):
super(autoprop, cls).__init__(name, bases, dict)
props = {}
for name in dict.keys():
if name.startswith("_get_") or name.startswith("_set_"):
props[name[5:]] = 1
for name in props.keys():
fget = getattr(cls, "_get_%s" % name, None)
fset = getattr(cls, "_set_%s" % name, None)
setattr(cls, name, property(fget, fset))
class InvertedX:
__metaclass__ = autoprop
def _get_x(self):
return -self.__x
def _set_x(self, x):
self.__x = -x
a = InvertedX()
assert not hasattr(a, "x")
a.x = 12
assert a.x == 12
assert a._InvertedX__x == -12
Más información sobre la lista de distribución Python-es