Это может означать это.
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'
Это довольно сложные конструкции, и трудно дать четкие объяснения; они не так просты, как макросы Lisp (или, между прочим, отношения между Lisp QUOTE
и EVAL
). Тем не менее, на веб-сайте Вольфрама есть хорошее и продолжительное обсуждение в виде заметок из выступления Робби Виллегаса "Неоцененные выражения" в 1999 году.
Defer
опущено в этом выступлении, потому что оно новое с Mathematica 6.0. Это очень похоже на HoldForm
, за исключением того, что когда он выводится во внешнем интерфейсе (но не в чистом ядре), он удаляется, оставляя выражение, которое можно использовать в качестве ввода. Это очень полезно, если вы хотите программно создавать выражения, которые пользователь может редактировать и оценивать, скажем, в палитре.