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