シコウノキロクスマートフォン用の表示で見るシコウノキロクアラサー男が自由を手に入れるまでの思考と試行の記録。6章|オブジェクトとクラスPython・WebPythonの入門書として各所でオススメされている入門Python3。shikouno.hatenablog.com前半7章までで基本をおさらいし、後半8章からは他分野で活用できそうなちょっとした応用編がオールインワン。第4版の次に読むとちょうどいいレベル感。その際、初めて知る箇所や曖昧でいつも検索する箇所を後で見返せるようにメモしておこうかと。そのため、このメモは僕の知識的偏りから生み出されたものであることを最初にお断りしておきます。気になった方は書籍を購入してください。Pythonと多言語の比較は面白いので必見!著者の冗談も随所に入っていて、面白くていい本です。英語版はPDFが無料で公開されています。親をis-a関係と言う。親クラスのメソッドを使いたい場合はsuper()を使う。コード例では親クラスのメソッドが簡単なため全ての処理をオーバーライドして書いた方が早いですが、コンストラクタの変数が多い場合や複雑なメソッドの場合には真価を発揮しそうですね。親クラスに変更があった場合に反映される点もメリット。非公開属性のための名前のマングリングPythonではゲッターとセッターは必要がないのですが、直接アクセスがどうしても嫌な場合はプロパティを用いるようです。他の言語を知らないのでピンときませんが。クラス外から変数へアクセスできないようにするためには、変数名の前にふたつのアンダースコアをつけます。これで、セッターやゲッターを用いたアクセスのみに制限することができます。アクセスすることは可能。お行儀の良いPythonユーザーはそんなことしませんよね。ゲッターとセッターを定義する際はproperty()メソッドかデコレータを用いる方法がありますが、入門Python3を読んでいていまひとつ理解が足りなかったので公式ドキュメントを読んで補いました。ドキュメントproperty()が代入されたクラス内変数を参照すると第一引数に渡したゲッターメソッドが呼び出されます。getter'hoge'メソッドの前に定義がわかるデコレータの方が僕は好みですね。デコレータの場合、メソッドは変数のように扱います。メソッドのタイプ通常のメソッドはインスタンスに紐づいていますが、クラスメソッドはクラス自体に紐づきます。そのため、クラスのインスタンスが何回作られたかを調べるメソッドを定義できるのです。直前に@classmethodを書いたメソッドがクラスメソッドで、クラス範囲内・メソッド範囲外に書かれた変数がクラス変数になります。クラスメソッドの第1引数はclsを使うようです。ClassMethod.counter()2静的メソッドはインスタンス化せずに実行することができますが、活用場面が思い浮かばない。直前に@staticmethodを書いたメソッドが静的メソッドで、selfやclsのような第1引数を取りません。コンポジション2つ以上のクラスの処理を取り入れたい場合、コンポジション・集約の方が良いことがある。コンポジションって言うんですね。オブジェクト指向的に言うとhas-a関係。インスタンス化されるクラスコードを書くときに意識せずに使っていますね。各処理や変数をもつクラスを、インスタンス化してMainクラスに渡す。モジュールではなくクラスとオブジェクトを使うべきなのはいつか複数のインスタンスが必要なとき、継承が必要なとき、変数が複数ありいくつかの関数に引数として渡すとき。繰り返しがある場合はクラスを使う方が良さそうですね。本格的なオブジェクト指向を勉強するまで、頭にとどめておきたい内容。さいごにクラスは曖昧にしていたところが多かったので3章に次ぐボリュームになってしまいました。デコレータと継承・コンポジションは、腰を据えて取り組んで腑に落とすことができたので良かったです。最後までお読みいただきありがとうございます。4章|コード構造Pythonの入門書として各所でオススメされている入門Python3。3章|リスト、タプル、辞書、集合Pythonの入門書として各所でオススメされている入門Python3。Pythonの入門書として各所でオススメされている入門Python3。cascade分類器で顔認識デジカメなどに搭載されている顔認識。OpenCVを用いると簡単に...2017-07-09DjangoのImageField・DBによる画像保存についてDjangoのモデルシステム、便利ですよね。(3)スポンサードリンクはてなブログをはじめよう!shikounoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。