Hi

On python doc here:
https://docs.python.org/3.4/reference/datamodel.html

it is said about __prepare__ metaclass's method:

If the metaclass has a __prepare__ attribute, it is called as namespace = metaclass.__prepare__(name, bases, **kwds) where the additional keyword arguments, if any, come from
the class definition.

I don't understand what they call the "class definition".

So I took their example and add a print(kwds)

class OrderedClass(type):

    @classmethod
    def __prepare__(metacls, name, bases, **kwds):
       print(kwds)
       return collections.OrderedDict()

    def __new__(cls, name, bases, namespace, **kwds):
       result = type.__new__(cls, name, bases, dict(namespace))
       result.members = tuple(namespace)
       return result

class A(metaclass=OrderedClass):
   def one(self): pass
   def two(self): pass
   def three(self): pass
   def four(self): pass

but print(kwds) outputs an empty dictionnary {}

So what kwds is supposed to contains ?

Thx
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to