Python字符串类在源代码中的位置

30 投票
4 回答
16592 浏览
提问于 2025-04-16 04:44

我想要重载一下 + 运算符,让它在某个字符串上工作,所以我在考虑创建一个字符串的子类,然后在这个新类里添加代码。不过我想先看看标准的字符串类,但我找不到它... 真是让人头疼,对吧?

有没有人能告诉我在哪里可以找到?就算是在线的源代码文档也行。

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这个类。我更倾向于使用组合的方式;可以创建一个包含字符串字段和特殊行为的对象。

撰写回答