class EiffelBaseMetaClass(type):
+ def __new__(meta, name, bases, dict):
+ meta.convert_methods(dict)
+ return super(EiffelBaseMetaClass, meta).__new__(meta, name, bases,
+ dict)
+
def convert_methods(cls, dict):
"""Replace functions in dict with EiffelMethod wrappers.
class EiffelMetaClass1(EiffelBaseMetaClass):
# an implementation of the "eiffel" meta class that uses nested functions
- def __new__(meta, name, bases, dict):
- meta.convert_methods(dict)
- return super(EiffelMetaClass1, meta).__new__(meta, name, bases, dict)
-
def make_eiffel_method(func, pre, post):
def method(self, *args, **kwargs):
if pre:
self._post(inst, x, *args, **kwargs)
return x
-class EiffelMetaClass2(EiffelMetaClass1):
+class EiffelMetaClass2(EiffelBaseMetaClass):
# an implementation of the "eiffel" meta class that uses descriptors
make_eiffel_method = EiffelDescriptor