Peter Norvig によるコードの「さらに優れた Python Lisp インタープリター」のポイントを理解するのに苦労しています。
解析を目的とした eval 関数で、彼はテスト isanstance(x,Symbol) を行っています。クラス Symbol は前に定義されていますが、pass で宣言されているため、メソッドはありません。
 class Symbol(str): pass
これらの行は、symbol_table を構築します。
def Sym(s, symbol_table={}):
    "Find or create unique Symbol entry for str s in symbol table."
    if s not in symbol_table: symbol_table[s] = Symbol(s)
    return symbol_table[s]
_quote, _if, _set, _define, _lambda, _begin, _definemacro, = map(Sym, 
"quote   if   set!  define   lambda   begin   define-macro".split())
_quasiquote, _unquote, _unquotesplicing = map(Sym,
"quasiquote   unquote   unquote-splicing".split())
Symbol(s)Symbol クラスのコンストラクターが定義されていないため、なぜ機能するのかわかりません。その後、evalメソッドはトークンが Symbol かどうかを次のようにチェックします。
def eval(x, env=global_env):
     "Evaluate an expression in an environment."
      while True:
          if isa(x, Symbol):       # variable reference
              return env.find(x)[x]
          else: #other stuff
isa(x,Symbol)謎です。ここのコードでは、token が変数参照 (つまり、以前に定義された x を持つ x) であるかどうかを確認する必要があります。私の意見では、ここのシンボルは文字列の装飾であり、で構築された初期化リストにあります
  _quote, _if, _set, _define, _lambda, _begin, _definemacro, = map(Sym, 
     "quote   if   set!  define   lambda   begin   define-macro".split())
P. Norvig によるこのコードの知識や読み方、または Python の経験に基づいて説明していただけますか? ありがとう