[Python-Dev] Dinamically set __call__ method

Gregory Ewing greg.ewing at canterbury.ac.nz
Wed Nov 12 23:20:22 EST 2014


Fabio Zadrozny wrote:
> can someone from python-dev give some background of why 
> that's the way it is?

It's because, with new-style classes, a class is also an
instance (of class "type" or a subclass thereof). So
without that rule, it would be ambiguous whether a dunder
method applied to instances of a class or to the class
itself.

 > and if maybe it's something which python-dev would consider worth
> changing in the future -- not sure how much could break because of that 
> though

Something fairly fundamental that would break is classs
instantiation! You instantiate a class by calling it, so if
a(x) were implemented as a.__call__(x), and class C had
a __call__ method, then C() would invoke that method
instead of instantiating C.

-- 
Greg



More information about the Python-list mailing list