Ian Kelly <ian.g.ke...@gmail.com>: > On Wed, Apr 6, 2016 at 2:39 PM, Marko Rauhamaa <ma...@pacujo.net> wrote: >> Not convinced. Probably just an oversight. > > It's documented here: > https://docs.python.org/3/reference/datamodel.html#special-method-lookup
Ok, not an oversight but some inherent trouble with the way object methods are related with their prototypes in the class. An unexpected deficiency in the object-class relationship of sorts. > The minidom implementation is probably just calling > filelike.write('blah'). That will succeed in calling either a method > or a function-in-an-attribute. Note that the write function you > defined in this example has no self argument. This points to the fact > that it's not truly a method. No true Scotsman, there? Once you look up an object method, it doesn't have a self argument. The self argument is cooked up for the benefit of the function definition in the class. IOW, if I have this class: class A: def f(self): print("f") and this object: a = A() then, a.f is a function that doesn't have a self argument. That function is generated on the fly, and it delegates to A.f, providing it with self argument. However, a.f itself is just a function that doesn't accept any arguments. Defining: def f(): print("f") a.f = f simply short-circuits the attribute lookup process; no need to consult the class when the attribute (method!) is right there in the object's dict. Marko -- https://mail.python.org/mailman/listinfo/python-list