Slide 1

Slide 1 text

Python のprint 関数に見 るポリモーフィズム Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 1

Slide 2

Slide 2 text

Python のprint 関数の挙動 どんな組み込みのオブジェクトをprint 関数の引数に与えても、 Python は綺麗に表示してくれる C++ のようなコンパイル言語ではそうはいかない Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 2

Slide 3

Slide 3 text

Python のprint 関数の挙動 Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 3

Slide 4

Slide 4 text

Python のprint 関数の挙動 例えば、最も簡単にPython のprint 関数をまねる方法として「関数 オーバーロード」がある Python ののprint 関数もこれで実現されているのだろうか? Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 4

Slide 5

Slide 5 text

Python のprint 関数の挙動 Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 5

Slide 6

Slide 6 text

Python のprint 関数の仕組み python のprint 関数 print(obj) は次と等価 Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 6

Slide 7

Slide 7 text

Python のprint 関数の仕組み obj.__str__() # & 「文字列型の標準出力」 Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 7

Slide 8

Slide 8 text

ポリモーフィズムとは ざっくりいうと・・・ Python のprint 関数にみるポリモーフィズム 抽象化した時に同じものを同じものとして扱うこと “ “ Copyright © 2022 @Shinonome517Stu 8

Slide 9

Slide 9 text

ポリモーフィズムとは (具体例) Python のprint 関数にみるポリモーフィズム Python の「文字列」も「リスト(配列)」も「タプル」も別モノ だけれども、 同じPython オブジェクトとして抽象的に「同じPython オブジェク トである」という扱いでコマンドラインに標準出力したい!! “ “ Copyright © 2022 @Shinonome517Stu 9

Slide 10

Slide 10 text

print 関数で表示できるデータ構造をつくる 人物相関図を保存するデータ構造を実装した Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 10

Slide 11

Slide 11 text

print 関数で表示できるデータ構造を作る マジックメソッドの__str__() 関数を実装するだけで、自作メソッドを print 関数の引数として実行できるようになった Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 11

Slide 12

Slide 12 text

所感 オーバーロードで実現していたら、ユーザーは気軽に拡張ができな かった。 ポリモーフィズムの考え方に則ってPython の構文や組み込み関数は 設計されている点が素晴らしいと思う。 スクリプト言語は大体このような実装がなされているのだろうか (JavaScript もそう) 動的型付けの実装に伴うものなんだろうか?(クラスが型を持つた め) Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 12

Slide 13

Slide 13 text

参考資料 Python 公式ドキュメント -print() 日曜プログラマーの休日 青春ブタ野郎はゆめみる少女の夢をみない - 登場人物相関図 Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 13

Slide 14

Slide 14 text

ご清聴ありがとうございました Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 14