2012/4/24 Mark Shannon <[email protected]>:
> I'm not happy with this fix.
It's not perfect, but it's an improvement.
>
> Admittedly code like:
>
> class S(str):
> __getattr__ = str.__add__
> s = S('a')
> print(S.b)
>
> is a little weird.
> But I think it should work (ie print 'ab') properly.
>
> This works without the patch.
>
> class S(str):
> __getattribute__ = str.__add__
> s = S('a')
> print(S.b)
Does it?
$ cat > x.py
class S(str):
__getattribute__ = str.__add__
s = S('a')
print(S.b)
$ python3 x.py
Traceback (most recent call last):
File "x.py", line 4, in <module>
print(S.b)
AttributeError: type object 'S' has no attribute 'b'
>
> (Prints 'ab')
>
> Also "slot wrapper" is a low-level implementation detail and
> shouldn't impact the language semantics.
>
> dict.__getitem__ is a slot wrapper; dict.__getitem__ is not.
> str.__getitem__ is a slot wrapper; list.__getitem__ is not.
> If any of these change then the semantics of the language changes.
--
Regards,
Benjamin
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com