Python字符串类在源代码中的位置
我想要重载一下 +
运算符,让它在某个字符串上工作,所以我在考虑创建一个字符串的子类,然后在这个新类里添加代码。不过我想先看看标准的字符串类,但我找不到它... 真是让人头疼,对吧?
有没有人能告诉我在哪里可以找到?就算是在线的源代码文档也行。
4 个回答
0
我的实现方式也差不多,不过没有那么整洁:
class MyClass:
def __init__(self, name):
self.name = name
def __add__(self, other):
for x in range(1, len(self.name)):
a = list(self.name)[-1 * x]
return self.name[:len(self.name)-x] + chr(ord(a) + other)
>>> CAA = MyClass('CAA')
>>> CAA + 1
'CAB'
>>> CAA + 2
'CAC'
>>> CAA + 15
'CAP'
2
你可能是这个意思。
class MyCharacter( object ):
def __init__( self, aString ):
self.value= ord(aString[0])
def __add__( self, other ):
return MyCharacter( chr(self.value + other) )
def __str__( self ):
return chr( self.value )
它的工作原理是这样的。
>>> c= MyCharacter( "ABC" )
>>> str(c+2)
'C'
>>> str(c+3)
'D'
>>> c= c+1
>>> str(c)
'B'
16
这里有相关的文档,可以查看。主要的实现代码在Objects/stringobject.c
。不过,可能你并不想去继承str
这个类。我更倾向于使用组合的方式;可以创建一个包含字符串字段和特殊行为的对象。