Subclass str: where is the problem?

pascal.parent at free.fr pascal.parent at free.fr
Mon Apr 24 08:42:57 EDT 2006


Hello, can anybody explain/help me:

Python 2.4.2 (#2, Sep 30 2005, 21:19:01)
[GCC 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu8)] on linux2


class Upper(str):
  def __new__(cls, value):
    return str.__new__(cls, value.upper())

u = Upper('test')
u
'TEST'
type(u)
<class '__main__.Upper'>
u = Upper('')
u
''
type(u)
<class '__main__.Upper'>


All seems to be ok...

class MyObject(object):
  def __init__(self, dictionary = {}):
    self.id = dictionary.get('id', '')
  def __setattr__(self, attribute, value):
    value = type(value) is type('') and Upper(value) or value
    object.__setattr__(self, attribute, value)

m = MyObject({'id': 'test'})
m.id
'TEST'
type(m.id)
<class '__main__.Upper'>
m = MyObject()
m.id
''
type(m.id)
<type 'str'>

Why is m.id a str ?
Thanks.




More information about the Python-list mailing list