Extending built-in objects/classes
Jon Clements
joncle at googlemail.com
Mon Jul 3 05:34:06 EDT 2006
Hi All,
I've reached the point in using Python where projects, instead of being
like 'batch scripts', are becoming more like 'proper' programs.
Therefore, I'm re-designing most of these and have found things in
common which I can use classes for. As I'm only just starting to get
into classes, I see that new style classes are thte way to go, so will
be using those. I come from a C++ background, and understand I need to
adjust my thinking in certain ways - I have read
http://www.geocities.com/foetsch/python/new_style_classes.htm.
As a really simple class, I've decided to make a 'str' to include a
'substr' function. Yes, I know this can be done using slicing, and
effectively this is what substr would do: something like;
class mystr(str):
"""" My rather rubbish but trying to be simple custom string class
"""
def substr(self,start,length,pad=False):
"""
Return str of (up to) _length_ chars, starting at _start_ which
is 1 offset based.
If pad is True, ensure _length_ chars is returned by padding
with trailing whitespace.
""""
return self.<what>[ (start-1): (start-1)+length ]
Ignore the fact pad isn't implemented...
<what> should be the actual string value of the string object: How do I
work out what this is?
Secondly, I'm not 100% sure what I need for the __init__; is str's
__init__ implicitly called, or do I need to call str's __init__ in
mystr's (I seem to remember seeing some code which did this, as well as
calling super()).
Any critiscm is appreciated.
Many thanks,
Jon.
More information about the Python-list
mailing list