embarrassing class question
Robert Kern
robert.kern at gmail.com
Thu Oct 21 15:04:47 EDT 2010
On 10/21/10 1:53 PM, Brendan wrote:
> On Oct 21, 3:47 pm, Carl Banks<pavlovevide... at gmail.com> wrote:
>> On Oct 21, 11:09 am, Brendan<brendandetra... at yahoo.com> wrote:
>>
>>
>>
>>
>>
>>> Two modules:
>>> x.py:
>>> class x(object):
>>> pass
>>
>>> y.py:
>>> from x import x
>>> class y(x):
>>> pass
>>
>>> Now from the python command line:>>> import y
>>>>>> dir(y)
>>
>>> ['__builtins__', '__doc__', '__file__', '__name__', '__package__',
>>> 'x', 'y']
>>
>>> I do not understand why class 'x' shows up here.
>>
>> Because you imported it into the namespace, which is what the import
>> statement does. dir() shows you what's in the namesace; therefore it
>> lists x. dir() doesn't care, and can't know, if something was defined
>> in a namespace, or merely imported.
>>
>> If it bothers you, you can put "del x" after the class y definition,
>> but I recommend against doing that in general. If there's a reference
>> to x inside a function that function will raise an exception if
>> called, because it expects x to be inside the namespace.
>>
>> Carl Banks
>
> So it must never make sense to put subclasses in separate modules?
Of course it can make sense to put subclasses in separate modules, just for
other reasons.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list
mailing list