AttributeError in "with" statement (3.2.2)

MRAB python at mrabarnett.plus.com
Thu Dec 15 00:15:58 EST 2011


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).



More information about the Python-list mailing list