[Python-Dev] Subclassing varying length types (What's a PyStructSequence ?)

M.-A. Lemburg mal@lemburg.com
Mon, 03 Dec 2001 10:09:38 +0100

Tim Peters wrote:
> [MAL]
> > Perhaps we should start thinking about optimizing at least
> > one of the Unicode malloc away in Python 2.3: the Unicode
> > object itself can well be kept on a free list with the
> > Py_UNICODE buffer freed and set to NULL. Doesn't save any memory
> > but would improve the performance.
> pymalloc would improve both, so I'd much rather pursue that in 2.3 than yet
> another type-specific free list.

Have you tried disabling all free list and using pymalloc
instead ? If this pays off, I agree, we should get rid off
all of them.

> > BTW, is the memory burden really such a big argument these days ?
> > I can imagine this being an argument on resource restrained
> > platforms such as Palms (thanks to Martin, the Plam guys can now
> > switch off Unicode completely), but hardly on gigabyte machines
> > with access 100s of GBs swap-space :-)
> Most of us have machines between those extremes, and the difference between
> 100MB and 300MB can be make-or-break.  I don't see that any "flexibility" is
> gained merely by wasting memory <wink>.

I would consider moving from 8-bit strings to Unicode an
improvement in flexibility. It also results in better algroithms
(== simpler, less error-prone, etc. in this case).

As I said, it's a tradeoff flexibility vs. memory consumption.
Whether it pays off depends on your application environment. It
certainly does for companies like Micron and pays off stock-wise
for a lot of people... uhm, getting off-topic here :-)

> > ...
> > Any idea how we could make subclassing these types less
> > hackish, then ?
> Subclassing seems easy enough to me from the Python level; I don't have time
> to revisit C-level subclasssing here (and I don't know that it's hackish
> there either, but do think it's in need of docs).

It is beautifully easy for non-varying-length types. Unfortunately,
it happens that some of the basic types which would be attractive
for subclassing are varying length types (such as string and

In my case, I'm looking for away to subclass strings, but I haven't
yet found an elegant solution to the problem of adding extra
data to the instances.

Marc-Andre Lemburg
CEO eGenix.com Software GmbH
Consulting & Company:                           http://www.egenix.com/
Python Software:                        http://www.lemburg.com/python/