Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Slide for lt-20220511
Search
Shinonome517
June 22, 2022
Programming
0
800
Slide for lt-20220511
The PDF slide for a lighting talk event at RICORA Programming Team on 2022 May 11.
Shinonome517
June 22, 2022
Tweet
Share
More Decks by Shinonome517
See All by Shinonome517
C++で末尾再帰を最適化したい / Cpp-tail-recursion-elimination
shinonome517
0
800
Other Decks in Programming
See All in Programming
業務でAIを使いたい話
hnw
0
230
alien-signals と自作 OSS で実現する フレームワーク非依存な ロジック共通化の探求 / Exploring Framework-Agnostic Logic Sharing with alien-signals and Custom OSS
aoseyuu
3
5.5k
Developer Joy - The New Paradigm
hollycummins
1
400
マイベストのシンプルなデータ基盤の話 - Googleスイートとのつき合い方 / mybest-simple-data-architecture-google-nized
snhryt
0
120
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
18
9.5k
AsyncSequenceとAsyncStreamのプロポーザルを全部読む!!
s_shimotori
1
230
Dive into Triton Internals
appleparan
0
420
AkarengaLT vol.38
hashimoto_kei
1
130
Reactive Thinking with Signals and the Resource API
manfredsteyer
PRO
0
120
Inside of Swift Export
giginet
PRO
1
330
One Enishi After Another
snoozer05
PRO
0
180
Swift Concurrency 年表クイズ
omochi
3
220
Featured
See All Featured
The Language of Interfaces
destraynor
162
25k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.3k
Practical Orchestrator
shlominoach
190
11k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Designing for Performance
lara
610
69k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Statistics for Hackers
jakevdp
799
220k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
How STYLIGHT went responsive
nonsquared
100
5.9k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Docker and Python
trallard
46
3.6k
Transcript
Python のprint 関数に見 るポリモーフィズム Python のprint 関数にみるポリモーフィズム Copyright © 2022
@Shinonome517Stu 1
Python のprint 関数の挙動 どんな組み込みのオブジェクトをprint 関数の引数に与えても、 Python は綺麗に表示してくれる C++ のようなコンパイル言語ではそうはいかない Python
のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 2
Python のprint 関数の挙動 Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu
3
Python のprint 関数の挙動 例えば、最も簡単にPython のprint 関数をまねる方法として「関数 オーバーロード」がある Python ののprint 関数もこれで実現されているのだろうか?
Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 4
Python のprint 関数の挙動 Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu
5
Python のprint 関数の仕組み python のprint 関数 print(obj) は次と等価 Python のprint
関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 6
Python のprint 関数の仕組み obj.__str__() # & 「文字列型の標準出力」 Python のprint 関数にみるポリモーフィズム
Copyright © 2022 @Shinonome517Stu 7
ポリモーフィズムとは ざっくりいうと・・・ Python のprint 関数にみるポリモーフィズム 抽象化した時に同じものを同じものとして扱うこと “ “ Copyright ©
2022 @Shinonome517Stu 8
ポリモーフィズムとは (具体例) Python のprint 関数にみるポリモーフィズム Python の「文字列」も「リスト(配列)」も「タプル」も別モノ だけれども、 同じPython オブジェクトとして抽象的に「同じPython
オブジェク トである」という扱いでコマンドラインに標準出力したい!! “ “ Copyright © 2022 @Shinonome517Stu 9
print 関数で表示できるデータ構造をつくる 人物相関図を保存するデータ構造を実装した Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu
10
print 関数で表示できるデータ構造を作る マジックメソッドの__str__() 関数を実装するだけで、自作メソッドを print 関数の引数として実行できるようになった Python のprint 関数にみるポリモーフィズム Copyright
© 2022 @Shinonome517Stu 11
所感 オーバーロードで実現していたら、ユーザーは気軽に拡張ができな かった。 ポリモーフィズムの考え方に則ってPython の構文や組み込み関数は 設計されている点が素晴らしいと思う。 スクリプト言語は大体このような実装がなされているのだろうか (JavaScript もそう) 動的型付けの実装に伴うものなんだろうか?(クラスが型を持つた
め) Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 12
参考資料 Python 公式ドキュメント -print() 日曜プログラマーの休日 青春ブタ野郎はゆめみる少女の夢をみない - 登場人物相関図 Python のprint
関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 13
ご清聴ありがとうございました Python のprint 関数にみるポリモーフィズム Copyright © 2022 @Shinonome517Stu 14