On Thu, 15 Dec 2011 05:15:58 +0000, MRAB wrote: > On 15/12/2011 05:01, Steven D'Aprano wrote: >> On Wed, 14 Dec 2011 18:13:36 -0500, Terry Reedy wrote: >> >>> On 12/14/2011 3:01 AM, Steven D'Aprano wrote: >>>> On Wed, 14 Dec 2011 01:29:13 -0500, Terry Reedy wrote: >>>> >>>>> To complement what Eric says below: The with statement is looking >>>>> for an instance *method*, which by definition, is a function >>>>> attribute of a *class* (the class of the context manager) that >>>>> takes an instance of the class as its first parameter. >>>> >>>> I'm not sure that is correct... I don't think that there is anything >>>> "by definition" about where methods live. >>> >>> From the Python glossary: >>> "method: A function which is defined inside a class body." >>> >>> That is actually a bit too narrow, as a function can be added to the >>> class after it is defined. But the point then is that it is treated >>> as if defined inside the class body. >> >> First off, let me preface this by saying that I'm not necessarily >> saying that the above glossary definition needs to be changed. For most >> purposes, it is fine, since *nearly always* methods are created as >> functions defined inside the class body. But it needs to be understood >> in context as a simplified, hand-wavy definition which covers 99% of >> the common cases, and not a precise, definitive technical definition. >> >> To give an analogy, it is like defining mammals as "hairy animals which >> give birth to live young", which is correct for all mammals except for >> monotremes, which are mammals which lay eggs. >> > [snip] > Or the naked mole-rat. Or cetaceans (whales).
Naked mole-rats and cetaceans do have hair, just not very much of it. E.g. http://marinelife.about.com/od/cetaceans/f/whaleshair.htm -- Steven -- http://mail.python.org/mailman/listinfo/python-list