こんばんは、
>
> class A:
> def x(self):
> print "x"
>
> class A: # ここで、前のAが破棄される
> def y(self):
> print "y"
>
> これでクラスAのインスタンスからx()メソッドを呼び出すと、
> 「んなもんはない」
> と、冷たくあしらわれます。
>
> ちなみに、最初の定義の直後のインスタンスと、再定義後のインスタンス
> の情報を見てみると、おなじ名前の全く別のオブジェクト(クラス)を
> 参照していることがわかります。
>
<中略>
> Pythonは別段「Object」のような「最上位クラス」は存在せず、自然発生
> 的に適当にクラスが出来るので、そういう必然性は無いみたいです(ここら
> へん、C++に近いけど、C++ではクラスメソッドは拡張できる)
この辺の記述が???なのですが、持っている本(*1)に「クラスは、"クラス
型"のオブジェクトである」ということが書いてあるので、私は以下のように
理解してます。
* "class A: ..."とは、"クラス型"のオブジェクトを生成し、そのリファレンス
をAが持つこと
* 同じ"A"でクラスを定義することは、単に異なるオブジェクトのリファレンスを
代入しているだけ。
という感じで、上記のクラスの2回の定義は「a=2して、a=3したあとにprint a
しても2は表示されない」のと同様に、(Python的には)普通の動作なんだと思います。
*1 「Python テクニカルリファレンス」ピアソン・エデュケーション
>
> まぁ、こういうあやしいことは出来ますが・・・
<攻略>
参考になれば