From 54b1d45cb3447aa52e37b65eba674932606e4d43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eray=20=C3=96zkural?= Date: Sun, 9 Oct 2005 19:53:11 +0000 Subject: [PATCH] * resurrect mary jane --- pisi/oo.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 pisi/oo.py diff --git a/pisi/oo.py b/pisi/oo.py new file mode 100644 index 00000000..2015b65b --- /dev/null +++ b/pisi/oo.py @@ -0,0 +1,24 @@ + + +# Guido's cool metaclass examples. fair use. ahahah. +# I find these quite handy. Use them :) + +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 autosuper(type): + def __init__(cls, name, bases, dict): + super(autosuper, cls).__init__(name, bases, dict) + setattr(cls, "_%s__super" % name, super(cls)) + +class autosuprop(autosuper, autoprop): + pass