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
CSC305 Lecture 02
javiergs
PRO
1
270
Six and a half ridiculous things to do with Quarkus
hollycummins
0
140
Devoxx BE - Local Development in the AI Era
kdubois
0
120
overlayPreferenceValue で実現する ピュア SwiftUI な AdMob ネイティブ広告
uhucream
0
180
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
2k
GraphQL×Railsアプリのデータベース負荷分散 - 月間3,000万人利用サービスを無停止で
koxya
1
1.2k
Things You Thought You Didn’t Need To Care About That Have a Big Impact On Your Job
hollycummins
0
210
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
190
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
270
育てるアーキテクチャ:戦い抜くPythonマイクロサービスの設計と進化戦略
fujidomoe
1
170
Advance Your Career with Open Source
ivargrimstad
0
460
私はどうやって技術力を上げたのか
yusukebe
43
18k
Featured
See All Featured
Visualization
eitanlees
148
16k
Side Projects
sachag
455
43k
Typedesign – Prime Four
hannesfritz
42
2.8k
Writing Fast Ruby
sferik
629
62k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
51k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Mobile First: as difficult as doing things right
swwweet
224
10k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
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