By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,929 Members | 1,830 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,929 IT Pros & Developers. It's quick & easy.

extending: new type instance

P: n/a
I'm writing my own (list-like) type in C. It is implementing
a Sequence Protocol. In 'sq_slice' method I would like to return
a new instance of my class/type.

How do I create (and initialize) an instance of a given
PyTypeObject MyType ?

I have tried to provide (PyObject *)&MyType as 'class' argument to:

PyInstance_New(PyObject *class, PyObject *arg, PyObject *kw)

It failed the PyClass_Check.

I have also found a couple of PyObject_New functions which accept
PyTypeObject as an argument. They look very low-level and obviously
don't call __init__. Should I do it myself manualy ?

BranoZ

Aug 16 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
"BranoZ" <za********@gmail.com> writes:
I'm writing my own (list-like) type in C. It is implementing
a Sequence Protocol. In 'sq_slice' method I would like to return
a new instance of my class/type.

How do I create (and initialize) an instance of a given
PyTypeObject MyType ?

I have tried to provide (PyObject *)&MyType as 'class' argument to:

PyInstance_New(PyObject *class, PyObject *arg, PyObject *kw)

It failed the PyClass_Check.

I have also found a couple of PyObject_New functions which accept
PyTypeObject as an argument. They look very low-level and obviously
don't call __init__. Should I do it myself manualy ?


PyObject_New is the usual way, although there are others --
MyType.tp_new, PyObject_Call ...

Cheers,
mwh

--
81. In computing, turning the obvious into the useful is a living
definition of the word "frustration".
-- Alan Perlis, http://www.cs.yale.edu/homes/perlis-alan/quotes.html
Aug 17 '05 #2

P: n/a
Michael Hudson wrote:
PyObject_New is the usual way, although there are others --
Thanks for an answer !
MyType.tp_new, PyObject_Call ...


Does this mean, that I can call my newly defined
MyType_new, MyType_init directly ??

I was afraid that Python might do some pretty important
housekeeping stuff around them.

BranoZ

Aug 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.