Transcript for:
Pythonクラスの初期化とself

はいこんにちは今回は python 入門の第19回目を始めていきたいとおもい ます 今回はですね前回に引き続きクラスっていうのをやっていくんですけども その中でもでせこちらのクラスの初期化っていうのをやっていきたいとおもいます でこのクラスの初期化っていうのは何なんだと言いますとですねこちらのアンダー スコア 2つにユニットで書いてあげて でまたアンダースコア2つっていうのですねクラス内で定義してあげるとこの オブジェクトを生成するときに常に呼ばれるようになるんですね でこれだけ聞いただけでは全く意味が不明だと思いますので早速コードを書いていき たいかなと思いますまずですね いつも通りクラスでチャイルドクラスっていうのを作ってあげましょう でこの格好の中はオブジェクトですね でここの下にですね今回ですねデフで init ぷ亭の準備してあげますでユニットの中はセルフですね でこの回いてあげてでここにですね 書いた処理っていうのがオブジェクトを生成すると常に呼ばれるようになるんですね なので例えばですねこちらにプリントの ざーわーとか書いといてでその下にですね 前回も書いたんですけどもセイハローっていうメソッドを中 日してあげてですねでここはセルフですね 木 でこの下にはプリントで前回と同じで いやーですね 本当にチャイルドがこんなパワーとか8とかいうかさて大きいですね こういうクラスを作成してあげたいかなと思います でここですねちょっとメソッドの間は空白を開けておきましょう これでシフトエンターしますはいこれでですね チャイルドクラスっていうのが作成できました それでは早速ですねおいでいくと生成したいかなと思います でそれはどうやってやるのかっていうと点数を用意してあげて でこの中にですねクラス名格好ですよね これでオブジェクトを生成できますさあでこれシフトエンダーしてあげましょう そうするとですねこちらなんですけどもまだですね メソッドっていうのは何も呼び出していないんですけども ここにはっていうのが出力されているかなと思います でこれがですね要するに先ほどもいっていた通りでこのクラス内で init って いうのを書いてあげるとオブジェクトを作った時に 常に呼ばれるようになりますとなので特にですね この init っての指定し なくてもですねこのオブジェクトを生成するだけでこの人に書いてある処理ってら実行 されるようになってます なのでこのことを応用するとですね例えば じゃあこのチャイルドクラスで子どもが自分の名前を言えるようにしたいとそういった 時にはですね init の中にそのことを書いてあげればいいんですね なのでこちらですねまたクラスを作成していくんですけども もう一回茶色の作ってあげてですねこのジェットで でこの下にもう1回ですね init を書いていくんですけども でここでセルフとですねここにネームっていうのを準備してあげるんですね 猫とでコロン書いてあげてでここでですね セルフの name っていう中に 9匹数で書いてある霊夢っていうのを渡してあげるんですね でこれでですねプリントで my game is ねここでですねちょっとカンマで区切ってあげて セルフのネームとおっ このように書いてあげます それでですね先ほどと同じようにレフで 性反応ですね で各国の中見せる深いてあげてかプリントでですね いやーと入力してあげましょうこれでですね オブジェクトをもう一度作成してみたいんですけども ここでですねー いつもはここの格好の中身何も入ってなかったんですけども このタイミングでですね例えば太郎とか書いてあげましょう これでし負担いたします そうするとですねこちらまだセイハローっていうメソッドは呼び出してないんですけど もこちらですね my name is 太郎っていうのが出てくるんですねでこれは何が起きたのかと いいますと ここでですねをロジェクト作成するときに 9太郎っていうのはですねこの init の ここにわたるんですね で9ネームっていうのがこの self . name っていうのに入って言っていでこの self .ネームってのプリントしてあげだと なのでですね今ここに my name is 太郎っていうのが出力されるんですね で津波ですねここ self .ネームって一体何なんだと言いますと self .つけておくとこのクラス内全体でこのネームっていうのが使えるように なるんですね これつまり何を言ってるかって言うとですねこれちょっとコピーしてあげて 内海こっちの下で書き直してあげるんですけども ここでですねじゃあ例えば青ハローの9プリントでですね self .ネームとしてあげましょう これでですねオブジェクトを作成した後に 西ルートの 西ハローメソッドを使ってあげるとでチェフとインターしてみましょう そうするとですねこちらオブジェクトを作成するときに渡してあった太郎っていうのが ですね こっちのせいハローメソッドでも使えるようになるんですね これ逆にですね9セルフっていうのを消してしまうとこれはエラーになってしまうん ですね ねそれを実際に見ていこうと思うんですけどもこれまたコピーしてあげてですね こっちの下に貼り付けてあげてで9ですね セルフっていうのを消してみたいかなと思います これでシフトエンターすると はいこのように据えエラーが出てしまいましたこっちの my name is 太郎 っていうのはここでですね 自動的に init のここが常に呼び出されるのでしっかりと実行できているわけな んですけども 今度こっちですよねエラーがここで起きてますよというところで でそのエラーの中身っていうのがある ゲームというのは定義されていませんと実際にですねこのネームっていうのは の生ハロメソッドの中で定義しているわけではないのでこのエラーはまだ頭であると逆 にですね 9ネームを使いたいのであればそれは self .ネームを履いてあげるとでここまでの話を聞くとですね このセルフっていうのは私なんだという疑問が湧いてくるかと思います その疑問を解消するためにですねまたちょっとしたに a 今度ですねこのクラスを作成するときに ユニットの中でですねセルフ自体をプリントしてみたいかなと思います でこれですね実際に行動書いてしまうんですけども 茶色るオブジェクトっていうのを作ってあげて でここでですねデフの位に行くと書いてあげてねセール付の ここでですねプリントでセルフっての出力してみたいかなと思いますでここですね zippo するためにはオブジェクトを作成すれば ok でしたよね なのでチャイルドねこうですねこれ recife とエンターしてみましょうはいそうするとですね この 9 print 文で出力した内容っていうのがこのないようになるんですけども このセルフっていうのはこれチャイルドオブジェクトですよって言ってますね さらにですねこの ここでだしたチャイルドこれもずっとプリントしてみたいと思います でプリントの小文字の方のチャイルドですねこれシフトエンターするとこのようにです ね こっちもファイルオブジェクトっていうのになってて でこの at いこの数字も一緒に観てほしいですね でこれを見てみるとですね全く同じ数字になっているんですねこれ要するにですね 何が言えるかって言うとこのセルフっていうのの正体はですね 自分自身だったわけなんですね今回で言うと その自分自身が何かっていうとこの小文字のチャイルドのことを言ってます でこのオブジェクトでですね何か変数を使いたいなぁといったときには 例えばこのようにですねネームっていうのを書いてあげてこっちにはですね 太郎っていうのを書いてあげるとこれでですねクラスの中で何か変数を使うことが できるようになるんですね でここまでの話ちょっと難しいかなぁと思うんです けどもとりあえずですねまあこの2つをおさえておけば ok でしょうっていうのが あって まず一つ目はですねこのクラス内のメソッドでは必ずセリフをつけますよってことです ねこれ init にしてもそうなんですけども あと生ハローの時もですねここでですね デフのせいハローっていうの書いてあげて でここに毎回セルフっていうのを書いていました でもう一つはですねこの init で受け取ったデータを今回で言うとネームなん ですけどもこれはですね self . name =ネームのように書いてそのクラス内で使えるようにします よと これはですね何を言っているかと言うとここでですね self . name っていうのを書いてあげてでその中に霊夢を入れますよと そうすることでですねこのクラス内のほかのメソッドですね こっちでもこの self .ネームが使えるようになりますよと こういうことを言ってます逆にですねこの2つだけ押さえておいていただければ特に 問題はないかなと思いますので今回の話がですね 少しややこしいなぁと感じた方はいったんはここを2つを認識しておいていただけると いいのかなと思います それではですね今回のクラスの初期化っていうのはここまでになりますね次回ですね クラスの継承っていうのをやったらこれでですねクラス編は終わりになってあと残り1 階ですね ライブラリーのインポートというのが残ってでそこまでやるとですね a 村入門が終了になりましてでここまで理解できて ルートですねアイソンを使ったデータ分析だったりあとはですね エクセルの自動化といったことがですね簡単に理解できるようになるので あと残り数回になりますが一緒に頑張っていきましょう