problems with the types module

Ronald Oussoren oussoren at cistron.nl
Thu Dec 12 02:58:31 EST 2002


On Wednesday, Dec 11, 2002, at 22:20 Europe/Amsterdam, David Necas 
(Yeti) wrote:

> On Wed, Dec 11, 2002 at 01:05:53PM -0800, Erik Max Francis wrote:
>> Michele Simionato wrote:
>>
>>> i.e. the same object is seen as a function inside the class scope and
>>> as an
>>> instance method outside the class scope. To me, this fact was quite
>>> surprising,
>>> I don't like to have a changing type depending on the context. Maybe 
>>> a
>>> unique
>>> 'function' type for both functions and methods would have been a
>>> simpler
>>> solution.
>>
>> But they're not the same.  Remember that first "self" argument;
>> functions and methods are handled differently, so a distinction needs 
>> to
>> be made.
>
> IIUC type(object) doesn't return type of the object, as we
> all thought and as is written everywhere.  The underlying
> object is unique and can have only one type (and it has not
> a name, since it's just some thing in memory).

type(value) does return the type of the object, the examples of
the OP just print the types of different objects:

class Foo:
	def bar(self):
		pass

	print id(bar), type(bar)

print id(Foo.bar), type(Foo.bar)

On my system this prints:
1118848 <type 'function'>
1155808 <type 'instance method'>

When class Foo is constructed the function object 'bar' is converted to 
an instancemethod object.

Ronald





More information about the Python-list mailing list