Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

dataclassとtypehintを使ってますか?

148 visualizaciones

Publicado el

dataclassとtypehintを使ってますか?

Publicado en: Tecnología
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

dataclassとtypehintを使ってますか?

  1. 1. dataclassとtypehint を使ってますか? ビール片手にLT大会 vol.3 (at WeWork日比谷) 1
  2. 2. 自己紹介 2
  3. 3. • BtoBマーケティングプラット フォームのデータ分析、開発をし ています • 最近の勉強テーマ はやかわ あつし @gepuro 3
  4. 4. 著書 • 次は何を書こうかな? 4
  5. 5. typehint 5
  6. 6. マウスを当てると型が表示される コーディングを助ける • 補完でコードを書きやすくなる 6 変数に型をつける def main(hoge: str): print(hoge)
  7. 7. dataclass 7
  8. 8. • dataclassデコレータをつける • クラス変数でフィールドを定義 データを格納するためのクラス 8 Python3.7から使えます import dataclasses @dataclasses.dataclass class FrozenData: hoge: str
  9. 9. __init__を自動で定義 9 class FrozenData: def __init__(self, hoge: str): self.hoge = hoge @dataclasses.dataclass class FrozenData: hoge: str
  10. 10. frozenでイミュータブルに • frozen=Trueとすれば、クラス変 数を処理途中で変更できなくなる • 意図しない変更を防げる 10 @dataclasses.dataclass(frozen=True) class FrozenData: hoge: str
  11. 11. Pythonあるある 11
  12. 12. どんな引数か不明 • Hogeは文字列?数字? • もしかして、辞書型では? 12 def main(hoge): print(hoge)
  13. 13. 辞書型の混沌 • key2は定義済みなのでは? • hogeはkey2以外のキーを持つ? • 辞書型が便利すぎて、全体の見通 しが徐々に悪くなる 13 def main(hoge): hoge["key2"] = 1 return hoge
  14. 14. KeyError頻発 14 辞書型が持つキーが分からない問題 if __name__ == "__main__": hoge = {} print(hoge["key1"])
  15. 15. typehint + dataclass 15
  16. 16. 引数に透明性を 16 import dataclasses @dataclasses.dataclass(frozen=True) class FrozenData: hoge: str def main(frozenData: FrozenData): print(frozenData) if __name__ == "__main__": fronzenData = FrozenData(hoge="hoge") main(fronzenData)
  17. 17. KeyValueErrorの不安なし 17 hogeという変数を持つことが補完で分かる
  18. 18. 引数に辞書型を使うの辞めよう • dataclassで補完しやすい • イミュータブルで綺麗さを保つ • 辞書型のKeyErrorが起きなくなる 18

×