[Tutor] Questions regarding class documentation ...
Lloyd Kvam
pythontutor at venix.com
Mon Jan 26 15:19:24 EST 2004
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
>
--
Lloyd Kvam
Venix Corp.
1 Court Street, Suite 378
Lebanon, NH 03766-1358
voice: 603-653-8139
fax: 801-459-9582
More information about the Tutor
mailing list