Initializing new types
Martin v. Loewis
martin at v.loewis.de
Mon Jan 7 01:07:51 EST 2002
More information about the Python-list mailing list
Mon Jan 7 01:07:51 EST 2002
- Previous message (by thread): Initializing new types
- Next message (by thread): [Tutor] confused if i should be doing type checking in the co de ( a confused java programmer)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
cpitaar at yahoo.com.ar (Carlos P.) writes: > The most important question is: am I using PyType_Ready() as I > should? Yes, that looks alright. > But I´m not sure if the way to explicitly initialize the type is > the one I´m following. What makes you think you might not? > Besides this, the code in xxsubtype.c confuses > me a little more because of the double initialization with different > base types: > > """ > DL_EXPORT(void) > initxxsubtype(void) > { > PyObject *m, *d; > > spamdict_type.tp_base = &PyDict_Type; > if (PyType_Ready(&spamdict_type) < 0) > return; > > spamlist_type.tp_base = &PyList_Type; > if (PyType_Ready(&spamlist_type) < 0) > return; That, in itself, is not double-initialization. Notice that these are two different types: spam*dict* and spam*list*, each of which is initialized but once in this fragment. There is another initialization of these types later on in initxxsubtype, which is superfluous. > And a last thing: PEP 253 says something about PyType_InitDict(). But > I couldn´t find this function in the sources. Perhaps the PEP is a > little outdated, isn´t it? That is very possible. Please submit a bug report or patch to sf.net/projects/python. > Well, as I´ve said before, my sample code is listed below. And after > it, an alternative one that shows what I think is not the right way > (or at least the best way) to initialize a type. Even if you fill out all fields of a type, you should still call PyType_Ready; future Python versions may add additional fields with default contents. So you should put contents into the fields only if this is specific to your type; no need to put in generic routines. HTH, Martin
- Previous message (by thread): Initializing new types
- Next message (by thread): [Tutor] confused if i should be doing type checking in the co de ( a confused java programmer)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list