[Tutor] Questions regarding class documentation ...
hcohen2
hcohen2 at comcast.net
Mon Jan 26 15:58:18 EST 2004
Lloyd,
Works fine as you described, thanks! Have any idea why I am not seeing
seeing the instance typed properly?
>>> import sampledict
>>> dictIns = sampledict.defaultdict()
>>> type(dictIns)
<class 'sampledict.defaultdict'>
What is the difference here, other than the simplicity of the class
definition?
>>> class C:
... print 'This is class C'
...
This is class C
>>> c = C()
>>> type(c)
<type 'instance'>
Is this explained by metaclass programming: "... Any class whose
instances are themselves classes, is a metaclass. When we talk about an
instance that's not a class, the instance's metaclass is the class of
its class ..."
Not crystal clear to me yet, but I am beginning to think that many of
the other times I have seen instances they were really derived from the
old built-in types. That is, the instance is itself a simple number
(could be complex) or string type object.
Not sure I am really happy with this, but this may be route to my
understanding this seeming discrepancy.
Thanks,
Herschel
Lloyd Kvam wrote:
> After importing a module, the "stuff" the module provides is referenced
> from within the module's namespace.
>
> What you want is:
>
> import sampledict
>
> print sampledict.defaultdict
>
>
> In general each python source file represents a separate namespace.
>
> hcohen2 wrote:
>
>> Sorry not sure what your is to address you by. However, your
>> explanation does take care of why the straight import <file name> did
>> not work. I used the from <file name> import <class name> and it did
>> work. Nonetheless, having seen so much discussion on why one should
>> not use from ... import ... I thought it odd this seemed necessary.
>>
>> I am, however, still bothered by my seeing an instance type()ed as a
>> class and not an instance.
>>
>> Thanks,
>> Herschel
>>
>> orbitz at ezabel.com wrote:
>>
>>> When you import a module, you tell python that you will be using
>>> these symbols. On the 'import' statement, the symbols in your
>>> module are not loaded into the global namespace. This is good,
>>> since there is always the change of two modules having the same
>>> class/function names in their namespace and you don't want them to
>>> conflict. so when you do import sampledict, it loads the module but
>>> all of the object it defines are located in the sampledict
>>> namespace. If you were sure you wanted defaultdict to be imported
>>> into the global namespace you could do:
>>>
>>> from sampledict import defaultdict.
>>>
>>> now your print defaultdict will work.
>>>
>>> I hope this helps.
>>>
>>>
>>> On Mon, 26 Jan 2004 09:33:57 -0500
>>> hcohen2 <hcohen2 at comcast.net> wrote:
>>>
>>>
>>>
>>>> Because the Core Python Programming book was so out of date
>>>> regarding class and objects discussion I switched over to reading
>>>> the Alan Gauld tutorial on the topic; afterward I directed my
>>>> attention to the documentation on the python.org site.
>>>>
>>>> [ Here are some facts to keep in mind as you read the discussion
>>>> below: documentation was for version 2.2.3 and I am using 2.2.2. I
>>>> have so far reproduced the results exactly when I ran it
>>>> interactively. I am trying to prepare myself to create
>>>> applications independently, hence, I try to go beyond the text
>>>> samples and use more general approaches.]
>>>>
>>>> Rather than running the code, in section: Subclassing built-in
>>>> types, interactively I pasted the class definition in a file.
>>>> Moreover, to keep it general I gave the file a name different from
>>>> the class defined in the file, since I would expect I would have
>>>> many unrelated class definitions within a single file that I would
>>>> load to run a custom application.
>>>>
>>>> So within the python interpreter I imported the file containing the
>>>> defaultdict class:
>>>>
>>>> >>>import sampledict # name sampledict.py
>>>>
>>>> however, when I attempted to run the sample code in the documentation:
>>>>
>>>> >>> print defaultdict
>>>> ...
>>>> NameError: name 'defaultdict' is not defined
>>>>
>>>> Running dir() shows, indeed, 'sampledict' is listed but not
>>>> 'defaultdict, despite the importing of the file that contains the
>>>> latter's definition.
>>>>
>>>> Perhaps what I did next was due to my having a tenuous grasp on
>>>> this topic I remembered the problems with unbound method
>>>> discussion. Hence, I tried to created an instance, but I got the
>>>> same error. At that point I became suspicious of the success the
>>>> importing command. Though I know it is bad style and a command to
>>>> be avoided I gave the command:
>>>>
>>>> >>> from sampledict import defaultdict
>>>> >>> print defaultdict
>>>> <class 'sampledict.defaultdict'>
>>>> >>> dictIns = defaultdict()
>>>> >>> print dictIns
>>>> {}
>>>> >>> type(dictIns)
>>>> <class 'sampledict.defaultdict'>
>>>>
>>>> Now the print dictIns 'works', but I have a number of questions!
>>>>
>>>> Again the interactive reproduction of the code works exactly as
>>>> described (as far as I have gone). While I can reproduce the
>>>> results, why doesn't the simple import command work for the file?
>>>> What happened to seeing an instance rather than the type now being
>>>> class for dictIns?
>>>>
>>>> Could someone enlighten me regarding these questions without citing
>>>> further documentation that might just add to my confusion as to
>>>> what may be happening. When I created instances previously that
>>>> were identified as instances not as a class. [Regarding the last
>>>> statement: on this machine with this version of Python.]
>>>>
>>>> It is very difficult to gain a firm grasp of this topic when the
>>>> results are so haphazard and not internally consistent.
>>>>
>>>> I would like to thank anyone that can clarify why I have run into
>>>> these difficulties.
>>>>
>>>>
>>>> _______________________________________________
>>>> Tutor maillist - Tutor at python.org
>>>> http://mail.python.org/mailman/listinfo/tutor
>>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Tutor maillist - Tutor at python.org
>>> http://mail.python.org/mailman/listinfo/tutor
>>>
>>>
>>>
>>
>>
>>
>> _______________________________________________
>> Tutor maillist - Tutor at python.org
>> http://mail.python.org/mailman/listinfo/tutor
>>
>
More information about the Tutor
mailing list