Subclass str: where is the problem?
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)
u = Upper('')
u
''
type(u)
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)
m = MyObject()
m.id
''
type(m.id)
Why is m.id a str ?
Thanks.
--
http://mail.python.org/mailman/listinfo/python-list
Re: Subclass str: where is the problem?
This is good... try this:
value = 'test'
value
'test'
type(value)
value = type(value) is type('') and Upper(value) or value
value
'TEST'
type(value)
value = 1
value
1
type(value)
value = type(value) is type('') and Upper(value) or value
value
1
type(value)
--
http://mail.python.org/mailman/listinfo/python-list
Re: Subclass str: where is the problem?
Effectively. Thanks a lot Peter and Harold. -- http://mail.python.org/mailman/listinfo/python-list
__getattribute__ and __slots__
Hi, I try to define a (new-style) class who: - have a __slots__ defined to be strict attributes, - return None if the attribute is 'ok' but not set, or raise a 'normal' error if the attribute isn't in __slots__. This code runs, but is it the good way? Thanks. class test(object): __slots__ = ['id'] def __getattr__(self, attr): if not attr in self.__slots__: raise AttributeError try: return self.attr except: return None -- http://mail.python.org/mailman/listinfo/python-list
