[Python-ideas] __data__

Steven D'Aprano steve at pearwood.info
Tue Feb 10 14:42:50 CET 2009


spir wrote:
> Hello,
> 
> I stepped on an issue recently that let me reconsider what we
> actually do and mean when subtyping, especially when deriving from
> built-in types. The issue basically is I need to add some information
> and behaviour to "base data" that can be of any type. (See PS for
> details.)
> 
> When subtyping int, I mean instances of MyInt to basically "act as"
> an int. This does not mean, in fact, inheriting int's attributes.

It doesn't? How bizarre.

> This means instead the integer specific operations to apply on a very
> special attribute instead of applying on the global object.

That sounds vaguely like delegation.

...

> Moreover --this is the reason why I first had to study that point
> closer--, the present syntax requires the base type to be unique
> *and* known at design time. 

I don't think so. Just write a class factory.

 >>> def factory(base):
...     class MyThing(base):
...             def method(self):
...                     return "self is a %s" % base.__name__
...     return MyThing
...
 >>> x = factory(int)()
 >>> x.method()
'self is a int'
 >>> y = factory(str)()
 >>> y.method()
'self is a str'


-- 
Steven




More information about the Python-ideas mailing list