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
760
Other Decks in Programming
See All in Programming
商品比較サービス「マイベスト」における パーソナライズレコメンドの第一歩
ucchiii43
0
200
Startups on Rails in Past, Present and Future–Irina Nazarova, RailsConf 2025
irinanazarova
0
300
Claude Code + Container Use と Cursor で作る ローカル並列開発環境のススメ / ccc local dev
kaelaela
12
7.5k
NEWT Backend Evolution
xpromx
1
150
[SRE NEXT] 複雑なシステムにおけるUser Journey SLOの導入
yakenji
0
780
変化を楽しむエンジニアリング ~ いままでとこれから ~
murajun1978
0
400
PHPUnitの限界をPlaywrightで補完するテストアプローチ
yuzneri
0
330
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
220
テスト駆動Kaggle
isax1015
1
890
202507_ADKで始めるエージェント開発の基本 〜デモを通じて紹介〜(奥田りさ)
risatube
PRO
5
1.1k
フロントエンドのパフォーマンスチューニング
koukimiura
6
2.3k
プロダクトという一杯を作る - プロダクトチームが味の責任を持つまでの煮込み奮闘記
hiliteeternal
0
240
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
21
1.3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
BBQ
matthewcrist
89
9.7k
Become a Pro
speakerdeck
PRO
29
5.4k
For a Future-Friendly Web
brad_frost
179
9.8k
A designer walks into a library…
pauljervisheath
207
24k
How to Ace a Technical Interview
jacobian
278
23k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1k
4 Signs Your Business is Dying
shpigford
184
22k
The Cult of Friendly URLs
andyhume
79
6.5k
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