Implementing A Custom String Method
How do you add a custom method to a built-in python datatype? For example, I'd like to implement one of the solutions from this question but be able to call it as follows: >>
Solution 1:
You can't. And you don't need to.
See Extending builtin classes in python for an alternative solution. Subclassing is the way to go here.
Solution 2:
The built-in classes such as str
are implemented in C, so you can't manipulate them. What you can do, instead, is extend the str
class:
>>>classmy_str(str):...defstrip_inner(self):...return re.sub(r'\s{2,}', ' ', s)...>>>s = my_str("A string with extra whitespace")>>>print s.strip_inner()
A string with extra whitespace
Solution 3:
You can't add methods to built-in classes. But what's wrong with using functions? strip_inner(s)
is just fine and pythonic.
If you need polymorphism, then just use if isinstance(obj, type_)
to determine what to do, or for something more extensible, use a generic function package, like PEAK-Rules.
Post a Comment for "Implementing A Custom String Method"