/usr/lib64/python2.6/Demo/metaclasses
NameSizeModeActions
Eiffel.py34680644editdlrm
Eiffel.pyc46430644editdlrm
Eiffel.pyo45400644editdlrm
Enum.py44190644editdlrm
Enum.pyc61990644editdlrm
Enum.pyo61990644editdlrm
index.html205750644editdlrm
meta-vladimir.txt115270644editdlrm
Meta.py29330644editdlrm
Meta.pyc46010644editdlrm
Meta.pyo46010644editdlrm
Simple.py11920644editdlrm
Simple.pyc27500644editdlrm
Simple.pyo27500644editdlrm
Synch.py79380644editdlrm
Synch.pyc85060644editdlrm
Synch.pyo83480644editdlrm
Trace.py41330644editdlrm
Trace.pyc61920644editdlrm
Trace.pyo61920644editdlrm
Edit: /usr/lib64/python2.6/Demo/metaclasses/Simple.py (1192B)
import types class Tracing: def __init__(self, name, bases, namespace): """Create a new class.""" self.__name__ = name self.__bases__ = bases self.__namespace__ = namespace def __call__(self): """Create a new instance.""" return Instance(self) class Instance: def __init__(self, klass): self.__klass__ = klass def __getattr__(self, name): try: value = self.__klass__.__namespace__[name] except KeyError: raise AttributeError, name if type(value) is not types.FunctionType: return value return BoundMethod(value, self) class BoundMethod: def __init__(self, function, instance): self.function = function self.instance = instance def __call__(self, *args): print "calling", self.function, "for", self.instance, "with", args return apply(self.function, (self.instance,) + args) Trace = Tracing('Trace', (), {}) class MyTracedClass(Trace): def method1(self, a): self.a = a def method2(self): return self.a aninstance = MyTracedClass() aninstance.method1(10) print aninstance.method2()