読者です 読者をやめる 読者になる 読者になる

へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)!

Pythonのインスタンスとかクラスとか__init__メソッドとかがよくわからなかったから自分なりに解釈してみた

勝手に解釈しただけなので、たぶん厳密に言うと全然違う。

でもうまいこと解説してあるサイトというのもあまり見つからなかった。

 

まず当たり前のように解説サイトに出現しやがる

『クラスのインスタンス』ってヤツ。

勝手に引用する。(引用元:インスタンスとは 【 instance 】 - 意味/解説/説明/定義 : IT用語辞典

)

 オブジェクト指向プログラミングで、クラスを基にした実際の値としてのデータのこと。クラスと対比して用いられることが多く、クラスを「型」、インスタンスを「実体」として説明されることもある。

(中略)

例えば「名前、身長、体重」というクラスがあるとすれば、そのインスタンスは「田中、175、65」というように作られる。一つのクラスから複数のインスタンスを作ることができ、それぞれのインスタンスは違った値を持ちうる。プログラムの中で実際に扱われるのはクラスではなく、こうして作られたインスタンスの方である。

 

適当に言っちゃうと

『2年1組』がクラスで

『2年1組のナントカ君』がインスタンスみたいなもの。

 

んで、クラス。

解説サイトなんかに行くと

class ClassName:

    def __init__(self, foo,bar):

        self.f = foo

        self.b = bar

 みたいなのが出現する。

そもそも、なんでクラスを使うのかよくわからなかったけど、使う意味はちゃんとあった。

またまた勝手に引用してみた。(引用元:クラスと関数・変数の違い:逆襲のニート

 表3.1 クラス/オブジェクト、関数、変数の違い

  データを保持 データを処理
変数 ×
関数 ×
クラス/オブジェクト

 



クラスの仕組みを説明するとき、以下の点を明確にすると分かりやすいと思いました。

・クラスと関数を比較する
・データの持ち方を基準にする
・関数はデータを保持できない。
・クラスはデータを保持できる。

 まとめると、クラスは、関数とかデータをいっぱい作って保存したりできるから、変数とか関数より便利だよ、ってとこに存在意義があった。

僕は『なんでそういうことをするのか』がよくわかっていないと、全然理解できないことが多いので、よくこういうところでつまる。

実践経験的な『まぁとりあえずこうなるし、こういう風に言われてるんだからこうしとけば問題ないだろ』という考えにはならない。

恐ろしく下士官には向いてない性格だなぁとたまに思う。

単に頭がそんなによくないだけかもしれない。

 

次、 __init__(self, ほにゃらら) に関して。

class ClassName:

    def __init__(self, foo,bar):

        self.f = foo

        self.b = bar 

test = ClassName('hoge','moge')

 この状態で、

print(test.f , test.b) 

としてやると、 

hoge moge 

 のように出力される。

つまり、__init__とはinitial(イニシャル)の字の如く、名前をつけて、いろんなデータとか関数とかを管理することに使う。(たぶん)

いまだによくわかっていない気がするけど、それはきっとコードをあんまり読んでないし、

Python チュートリアルの本を読んでいる途中なのもあると思う。

かなり適当な読み方をしているし。

上記の、赤い文字のところだけ、ちょっと特殊な挙動をしていると考えるとわかりやすい気がする。

 

まぁ…なんというか、プログラミングの世界は専門用語がいっぱいでてきてわかりにくい。

超絶初心者の僕でさえ、パソコンのパの字も知らない人よりははるかに専門用語を知っているわけだから、プログラミングってのは敷居が高い。

(OS、CPU、インターネットブラウザ、ブートモード、GUI、グラフィックメモリ、ファンクションキー、タイピングとかのそういう初歩的な言葉。たぶん僕のオヤジは知らない。)

小学校の漢字が読めないのに中学校の国語の文章を読む感じに近い。

だから難しいんだと思う。

 

ていうか、Pythonでそこらへんのバイトで雇ってもらえるレベルって、どのくらいなんだろうか。

正直貧乏だけど、コンビニで『しゃ~せ~』という仕事よりかは、賃金安くてもソッチ系のバイトの方につきたいから、微妙に困っている。

 

ニートしすぎた。