Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 561995
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T12:30:29+00:00 2026-05-13T12:30:29+00:00

I’ve got two different Python extension modules; let’s call them A and B. Module

  • 0

I’ve got two different Python extension modules; let’s call them A and B. Module A contains a storage class type called container that I want to use within Module B as the return type of a class method.

I can’t seem to find any documentation on how I’m supposed to do this. I roughly followed this article to create the modules/classes, except I didn’t declare all the methods as static, so they would be accessible: http://nedbatchelder.com/text/whirlext.html

My question is then, how do I go about creating an instance of container that I can pass back as the PyObject* return value of a class method in module B? The container definition looks like this:

typedef struct {
    PyObject_HEAD

    storageclass* cnt_;
} container;

I tried simply doing the following within the method in question, where container_init is the method I have registered as tp_init for the container class:

pycnt::container* retval;
pycnt::container_init(retval, NULL, NULL);
return (PyObject*)retval;

However according to the Python interpreter I’m getting back the class that I called the method on. (i.e., myclassinstance.mymethod() is returning myclassinstance).

I’m obviously going about this the wrong way, but I have no idea what the right way is. Any suggestions? Just to cut anybody off that’s going to suggest it – no I am not interested in using SWIG or Boost::Python. I tried that already and the underlying storage class for container didn’t play nicely with either (SWIG couldn’t even parse it). So far doing the extensions myself has been pretty painless, but I’m stumped on this one.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T12:30:30+00:00Added an answer on May 13, 2026 at 12:30 pm

    Your problem is that type->tp_init doesn’t do what you want. type->tp_init is called after an object is allocated to do the instantiation. You’d first have to allocate the object using type->tp_new, then pass that object as the first argument to type->tp_init. Since you pass an uninitialized pointer to tp_init, all bets are off. You typically don’t call either function directly, though, and instead call one of PyObject_Call*() on the type object itself to create a new instance. Or provide a normal C function to create a new instance, a la PyFoo_New().

    That said, the usual way to do intercommunication between two extension modules is to do it through the Python API. If you want module B to import and use module A, you call PyImport_Import() to get the module object, PyObject_GetAttrString() to get the type object you care about, and one of PyObject_Call*() to instantiate it. Any place you want to store a pointer to that type, you would just take a PyObject *.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 304k
  • Answers 304k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer For the Subsonic 3 I think that the answer is… May 13, 2026 at 8:45 pm
  • Editorial Team
    Editorial Team added an answer I believe Amazon's terms-of-service prohibit using their API to purchase… May 13, 2026 at 8:45 pm
  • Editorial Team
    Editorial Team added an answer You don't. You setup a scheduled task; services as (generally)… May 13, 2026 at 8:45 pm

Related Questions

I've got a string that has curly quotes in it. I'd like to replace
I'm trying to decode HTML entries from here NYTimes.com and I cannot figure out
I ran into a problem. Wrote the following code snippet: teksti = teksti.Trim() teksti
I have a French site that I want to parse, but am running into
I have text I am displaying in SIlverlight that is coming from a CMS

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.