①>>> とか書かれていますから、Pythonの対話モードでの実行での話ですね。
Pythonの対話モードで式(正確はに式文)を実行してその結果がNoneでない場合は結果が表示されます。
Pythonの対話モードで(正確はに式文)を実行してその結果がNoneである場合はなにも表示されません。
Pythonの対話モードで式文でない文を実行した場合はなにも表示されません。
もしも式と文と式文がわからない場合は以下をお読みください。
Pythonの式と文の違いは何ですか?
ここまでは理解できているでしょうか。
次に x.a はxの属性aを表す式です。
単独で行に書かれた場合は、式文になります。
ではここから個々の文で何が起こるかを説明します。
d=Dog('Fibo') ではクラスDogのインスタンスが生成されて、dという変数に束縛されます。
(変数への代入のようなものです)。e=Dog('Buddy')も同じようななものです。
このとき、d.tricksもe.tricksも[]です。
d.add_trick('転がる') が実行されると、d.tricksが['転がる']になります。それは、add_trickが実行されるからです。
e.add_trick('死んだふり') が実行されると、同じようにe.tricksが['死んだふり']になります。
①>>>d.add_trick
は、Dogクラスのインスタンスであるdのインスタンスメソッドであるadd_trickという式文です。
実行してみるとわかりますが
<bound method Dog.add_trick of <main.Dog object at 0x000002639BD01550>>
のようなものが表示されます。
②>>>de.tricks
③>>>de.add_trick
はエラーです。エラーになる理由は、deが定義されていない変数だからです。
④>>>d.tricks
はDogクラスのインスタンスであるdの属性tricksという式文です。この値は['転がる']ですのでそれが表示されます。
なお、d.tricksもe.tricksも院sタンス変数ですので、タイトルの「クラス変数の問題」というのは不適切です。