Can I add methods to built in types with classes?

C

CC

Hi:

I've gotten through most of the "9. Classes" section of the tutorial. I
can deal with the syntax. I understand the gist of what it does enough
that I can play with it. But am still a long way from seeing how I can
use this OOP stuff.

But I have one idea. Not that the functional approach isn't workable,
but I have a situation where I need to test if all the characters in a
string are in the set of hexadecimal digits.

So I wrote:
------------------------------------------
from string import hexdigits

def ishex(word):
for d in word:
if d not in hexdigits: return(False)
else return(True)
------------------------------------------

Then I can do this to check if a string is safe to pass to the int()
function without raising an exception:

if ishex(string):
value = int(string, 16)

But can I create a class which inherits the attributes of the string
class, then add a method to it called ishex()? Then I can do:

if string.ishex():
value = int(string, 16)

The thing is, it doesn't appear that I can get my hands on the base
class definition/name for the string type to be able to do:

---------------------------------------
class EnhancedString(BaseStringType):
def ishex(self):
for d in word:
if d not in hexdigits: return(False)
else return(True)
 
S

Scott David Daniels

CC said:
... But am still a long way from seeing how I can use this OOP stuff.
... I wrote:
from string import hexdigits
def ishex(word):
for d in word:
if d not in hexdigits: return(False)
else return(True)
Then I can do this to check if a string is safe to pass to the int()
function without raising an exception:
if ishex(string):
value = int(string, 16)

The Pythonic way to do this is simply:
try:
value = int(string, 16)
except ValueError:
said:
... Can I create a class which inherits the attributes of the string
class, then add a method to it called ishex()? ...
> The thing is, it doesn't appear that I can get my hands on the base
> class definition/name for the string type to be able to ....

class MyStr(str):
def ishex(self):
try:
value = int(self, 16)
except ValueError:
return False
return True
# in fact, you could even say
# class MyStr(type('123')): ...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,575
Members
45,053
Latest member
billing-software

Latest Threads

Top