|
From: Colin J. W. <cj...@sy...> - 2005-10-10 11:51:17
|
Travis Oliphant wrote: > >>> I'm not sure what you are talking about here? Where are you getting >>> this? >>> >>> >>> I don't know of any such attribute. There is a __class__ >>> attribute. But I don't see a >>> >>> __class__ module(name[, doc]) attribute >>> >>> -Travis >>> >> >> Please see the sequence below: >> >> >>> import scipy.base.multiarray as M >> >>> M.__class__ >> <type 'module'> >> >>> >> >> I am surprised that this name points to a module. It usually is an >> attribute of a class instance which >> points to the class object of that instance. > > > Why is this surprising? scipy.base.multiarray is a module, therefore > it's "class" is type 'module'. This seems fine to me. At any rate, > Python is assigning the __class__ attribute to the extension module > multiarray, so it is what it is. > > -Travis > Yes, this is the Python practice: >>> import timeit >>> timeit.__class__ <type 'module'> >>> import anydbm >>> anydbm.__class__ <type 'module'> >>> Yes, timeit.__class__ points to the internal module creator function: >>> import new >>> new.module <type 'module'> >>> new.module.__doc__ 'module(name[, doc])\n\nCreate a module object.\nThe name must be a string; the optional doc argumen t can have any type.' >>> new.module is timeit.__class__ True >>> With a little digging, this is logical, consistent and no longer surprising. Colin W. |