Python

PythonでUpcast/Downcast出来ない件と多態性のサンプル

投稿日:

継承・カプセル化・多態性

オブジェクト指向の必須要素はこれ。継承、カプセル化・多態性。
異種リストを書けば全部試せるので試してみる。

多態性実現のためにオブジェクトのUpcast/Downcastを調べようとしたら存在しない!。
結論として、PythonにおいてはオブジェクトのUpcast/Downcastは出来ない。

動的型付けなんで、Upcastは勝手に上位クラスだと思って触れば良いのだけど、
形だけでも上位クラスにキャストしておいた方が可読性は上がると思うので残念。

abstractメソッドを定義するだけでパッケージを要求するとか切ない。

なお、Downcastについては、以下のようにしている例がある。

確かに、Upcastは動的型付けの範囲内だが、実現可能でDowncastは何らかの指示が必要で、
必要な方にだけ手段が用意されているのは合理的な気もする。

関数

defで定義する。最初の行に書いた文字列リテラルはdocstring。PHPDoc的なやつだろうか。
関数のスコープからローカル->グローバル->ビルトインの順にシンボルを参照できる。
関数スコープから外のスコープのシンボルは書けない。(global指定して初めて書ける)。

フィボナッチ数列。

キーワード引数も使える。

-Python
-

Copyright© ikuty.com , 2024 AllRights Reserved Powered by AFFINGER4.