Re: Metaclasses in traitlets and PEP 487

Martin Teichmann <[email protected]>
Newsgroups gmane.comp.python.ipython.devel
Message-ID <CAO9LD_Dp5Xz7x9zXx3ww_C7qXZ+Gtcd0i3tSgLhqZuLmDfr6TA@mail.gmail.com>
Hi Sylvain,

> My understanding is that the new `__set_owner__` method on the descriptor exactly corresponds to the `class_init` in our base Descriptor class, that is the part of the descriptor initialization that depends on the class (while `instance_init` is the part of the initialization that depends on the instance). However, it sometimes does a bit more than setting the name of the owner, like in the case of the default initializers. Hence I was wondering if the name was accurate. What do you think about simply reusing `__class_init__`?

There was some discussion on python-ideas about that name.
It is an extension to the descriptor protocol, which already has three
methods: __set__, __get__ and
__delete__. How should we name the new method?

I personally don't like __class_init__, I think it is actually
misleading, as it is called on an object, not a class.
Originally, I had it called __init_descriptor__. Others considered
that misleading, because in the
new metaclass there is also an __init_subclass__, and one might think
that __init_descriptor__ is also
called on the initialized class, but it is called on the descriptor.
This is where the name __set_owner__ came
from, as in __get__ the parameter is called owner. But given that not
only the owner is set, but also the
name of the descriptor, __set_owner__ also might not be the best choice.

Greetings

Martin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.