What are super()'s semantics?
Steve Holden
steve at holdenweb.com
Tue Sep 5 02:32:53 EDT 2006
Maric Michaud wrote:
> Le lundi 04 septembre 2006 22:29, Carl Banks a écrit :
>
>>BTW, __class__ is available to instances. (Were you thinking of
>>__bases__?)
>
>
> hmmm, I guess they're not the same, are they ?
>
> but you're right, __bases__ and some others are class attributes not available
> in instances, I wonder where is this documented and I'm not enough familiar
> with python' source code to find this.
>
> Also this create weird things, like a code posted on this list, which was
> very confusing and looked to something like :
>
> In [24]: class A(object) :
> ....: __class__ = list
> ....:
> ....:
>
> In [25]: A.__class__
> Out[25]: <type 'type'>
>
> In [26]: A().__class__
> Out[26]: <type 'list'>
>
> In [27]: isinstance(A(), list) # ouch !
> Out[27]: True
>
> In [29]: type(A())
> Out[29]: <class '__main__.A'>
>
> In [30]: type(A()).mro()
> Out[30]: [<class '__main__.A'>, <type 'object'>]
>
>
You are beginning to appreciate the meaning of the phrase "Python is a
language for use by consenting adults". The general philosophy is to
provide a coherent and easily-used framework in the expectation that
users will not shoot themselves in the foot (too often).
regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://holdenweb.blogspot.com
Recent Ramblings http://del.icio.us/steve.holden
More information about the Python-list
mailing list