AttributeError in "with" statement (3.2.2)

Steven D'Aprano steve+comp.lang.python at pearwood.info
Thu Dec 15 02:21:31 EST 2011


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



More information about the Python-list mailing list