Python C-API: how to define nested classes?
Stefan Behnel
stefan_ml at behnel.de
Fri May 17 01:16:25 EDT 2013
Serge WEINSTOCK, 16.05.2013 10:55:
> I'm currently writing a C extension module for python using the "raw" C-API. I would like to be able to define "nested classes" like in the following python code
>
> ============================================================
> class A:
> class B:
> def __init__(self):
> self.i = 2
> def __init__(self):
> self.b = A.B()
> a = A()
> b = A.B()
> print(a.b.i)
> print(b.i)
> ============================================================
>
> How can I create such nested class with the C-API?
Assuming you really mean Python classes and not extension types, you might
get away with defining them separately and then assigning
A.B = B
Recent Python versions added a __qualname__ attribute for classes that you
might want to fix up in this case.
If you need better compatibility, consider writing your code in Cython.
Stefan
More information about the Python-list
mailing list