Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #45468

Re: Python C-API: how to define nested classes?

From Stefan Behnel <stefan_ml@behnel.de>
Subject Re: Python C-API: how to define nested classes?
Date 2013-05-17 07:16 +0200
References <F4784E858CF3D843B7D0E5D3DE563EED2BA5E7DD@LONS00110044.mercury.intra>
Newsgroups comp.lang.python
Message-ID <mailman.1780.1368767797.3114.python-list@python.org> (permalink)

Show all headers | View raw


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

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Re: Python C-API: how to define nested classes? Stefan Behnel <stefan_ml@behnel.de> - 2013-05-17 07:16 +0200

csiph-web