100日後にプロになるワシ5日目(python)
やったこと
第9章(クラス)
classの宣言
ローカル変数。グローバル変数。基本的にはjsと同じ
nolocal(ポイントに記載)
クラスオブジェクト
インスタンスオブジェクト
メソッドオブジェクト
class SubClass (mainClass): // クラスの継承
プライベート変数(ポイントに記載)
イテレータ(ポイントに記載)
ジェネレータ(ポイントに記載)
ポイント
・nolocalを使うと今の関数の外側の変数に干渉できる
・class直下で変数を定義する場合とclassの__init__内で定義する場合で挙動が異なる
__init__内で定義すればそのインスタンスごとで使用されるが、class直下で宣言した場合class単位で共通となりinstansから参照できるグローバル変数のような使い方ができる。
・プライベート変数というのはpythonでは存在しない。が、アンダースコアを二つ付けて実装すると名前マングリングというのが起きる。これは変数が置換されアクセスしづらくする効果がある。ただ、あくまでアクセスしづらくするだけなので、指定によってはアクセスできる。
https://qiita.com/mounntainn/items/e3fb1a5757c9cf7ded63
・for文などでループできる機構はイテレータという。イテレータにはiter()メソッドがあり__next__()というメソッドが次々に呼ばれて一つ一つを処理することができる
・ジェネレータはイテレータを作ることができるツール。この時値を返すメソッドはreturnではなくyieldを使用する
感想
なかなか複雑で面白い。
いいなと思ったら応援しよう!
いつもサポートありがとうございます。
難しい方は感想をコメントでいただけると嬉しいです。