Ответ 1
Здесь описано здесь. Основная реализация - Objects/stringobject.c
. Подклассификация str
, вероятно, не то, что вы хотите. Я бы предпочел здесь композицию; имеют объект со строковым полем и особым поведением.
Я занимаюсь перегрузкой оператора +
для определенной строки, поэтому я думал о подклассификации класса строк, а затем добавлял код в новый класс. Однако я хотел сначала взглянуть на стандартный класс строк, но я не могу найти его... глупо, а?
Может ли кто-нибудь указать путь? Даже онлайн-документация исходного кода.
Здесь описано здесь. Основная реализация - Objects/stringobject.c
. Подклассификация str
, вероятно, не то, что вы хотите. Я бы предпочел здесь композицию; имеют объект со строковым полем и особым поведением.
Это может означать это.
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'
моя реализация похожа, хотя и не такая аккуратная:
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'