]> granicus.if.org Git - python/commitdiff
Get the meta class inheritance right.
authorJeremy Hylton <jeremy@alum.mit.edu>
Fri, 12 Jul 2002 15:42:10 +0000 (15:42 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Fri, 12 Jul 2002 15:42:10 +0000 (15:42 +0000)
Demo/newmetaclasses/Eiffel.py

index 3e68611f56a3182a22b5ac94afb4c38964b45da3..1dd7e6c17f04e078b672d35ab0d746deda00dd73 100644 (file)
@@ -4,6 +4,11 @@ from new import function
 
 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.
 
@@ -30,10 +35,6 @@ class EiffelBaseMetaClass(type):
 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:
@@ -80,7 +81,7 @@ class EiffelDescriptor(object):
             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