prep my types for 2.2?

Michael Hudson mwh at python.net
Mon Nov 26 07:21:48 EST 2001


Pete Shinners <pete at shinners.org> writes:

> > Python will look at the type of your_type (which will be the type
> > type), and then look at its tp_call slot
> > (i.e. typeobject.c:type_call). That, in turn, will use tp_new.
> 
> this is where i start to get confused?
> isn't the "Type type" the same for all type objects? for example..
> 
> 	>>> type(int) is type(float)
> 	1
> 
> since this is both the same thing, how can i change the tp_call for
> only one of the types?

class C:
 def foo(self):
  print 1, id(self)

c = C()
d = C()

c.foo()
d.foo()

But how can these calls be different?  c.__class__ is d.__class__!

Same thing.






In less obscure terms: when you call <type-object>(stuff), the first
argument to the C function that implements this
(Objects/typeobject.c:type_call) is <type-object>.  It's this type
object's tp_new that is called.

If you were calling type(int)(1), then you'd have a point.

> i was guessing there was some sort of new function slot for this, but
> the docs on all this are a little sparse.

This is true.

Cheers,
M.

-- 
  In general, I'd recommend injecting LSD directly into your temples,
  Syd-Barret-style, before mucking with Motif's resource framework.
  The former has far lower odds of leading directly to terminal
  insanity.                                            -- Dan Martinez



More information about the Python-list mailing list