Skip to content Skip to sidebar Skip to footer

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"