Python の init と self についてのひと考察

初めに

投稿主はC#をやっていたので始めたころ意味が分からんかったので自分なりに解釈してみました。

一言でいうと

pythonのメゾットはC#でいう静的メゾットみたいなものだと解釈した。
(呼び出されるほうだけ)

詳しくいうと

pythonのクラスの中のメゾットはメンバ変数やメゾットにアクセスができないらしいので、自分の所属しているクラスを引数で渡すということをしていると考えられる。ただし呼び出すほうは引数を省略されているのに呼び出されるほうは省略されていないのでさらにややこしかったです。(ちなみに第一引数はselfじゃなくてもOK)

initの時にself.変数とすると

pythonではinitの中でself.変数とするとメンバ変数として定義されるということを最近知った。(initの中だけ)C#だとそんなことできないのでどこに定義されてるの?と調べまわったりしていました。

まとめ

上級者にとっては省略をすると書きやすかったりミスを少なくしたりといいことが多いだろうけれど、初心者にとってはとても不親切でイライラする。あと、おまじないとか言っている奴はほんとにやめてくれ。

いいなと思ったら応援しよう!