オブジェクト指向プログラミングでは､ runのような独自のメソッドを持つオブジェクトを作ることができます｡
そして､ 属性｡
プロパティ
言語に機能を追加し､ 実世界を模倣するのに最適な方法です｡
例えば､ ゲーム会社で働くというアイデアを使います｡
Pythonはいくつかのデータ型しか与えてくれませんでしたが､ プレイヤーキャラクターを作ることができました｡
このプレイヤーキャラクターはゲーム中で使うことができ､ 他のコーダーはキャラクターのカスタム名と年齢を書いたこの行を実行するだけでいいので､
上司は喜んでいます｡
つまり､ OPを使えば､ 再現性があり､ よく整理され､ またメモリ効率のよいコードを書くことができるのです｡
そうだろ？
だって､ 一度しか書かないんですもの｡
ですから､ もしあなたが優れた開発者になりたいのであれば､ OPは知っておく必要がありますし､ 理解する必要があります｡
なぜなら､ まあ､ これがあなたのコードを整理する方法なのですから｡
手続き的な思考を減らし､ 機能的な思考をすること｡
属性のようなデータをメソッドと一緒にグループ化し､ 実世界の何かを模倣することができるこのクラスを作成します｡
さて､ ここで便利なツールを紹介したい｡
I do Player Dotの時もそうでしたね｡
エディタには､ プロパティと､ 利用可能なメソッドが紫色のボックスで表示されます｡
そしてすぐに､ 名前と実行があることがわかりますが､ その他にもデフォルトで用意されているものがあります｡
さて､ これらはすべてダンダー法､ あるいはマジック法である｡
しかし､ ここで重要なのは､ helpのようなことをすると､ 今まで見たことがないような新しい関数になるので､
これをコメントアウトしてみましょう｡
実行」をクリックすると
実際に､ オブジェクトの設計図全体がよくわかるんです｡
リストみたいなことをしたら
そして､ 「実行」をクリックします｡
ここでも､ それが持つ設計図が示されています｡
そして､ これはいくつかのPythonデータ型がどのようなクラスの青写真を持っているかを見るのに最適な方法です｡
さて､ これは後ほど改めて説明します｡
しかし､ 私はこのこのプレイヤーキャラに戻りたいのです｡
さて､ ここで､ 属性を作成することができることを確認しました｡
そして､ 属性は動的なデータの断片である｡
つまり､ オブジェクトをインスタンス化するときに､ 名前や年齢のように､ その特定のオブジェクトに固有のものになるのです｡
そして､ このselfキーワードを使って､ ダイナミックに動くようにする必要がありました｡
しかし､ もう一つクラスオブジェクト属性というものがあり､ それは次のようなものでしょう｡
例えば､ プレイヤーキャラクターがいて､ 彼らは､ 例えば､ 有料会員でなければならないとします｡
このゲームをプレイするためには､ プレイしたことがあるか､ メンバーシップを取得する必要があります｡
だから､ 会員制のイコールにしよう｡
本当です｡
属性です｡
さて､ これと違って､ メソッドと同じ行にあるのがおわかりでしょうか｡
そして､ これをクラスオブジェクトと呼びます｡
属性です｡
クラスオブジェクトの属性は､ 通常のクラス属性とは異なり､ 動的ではなく､
静的です｡
だから､ クリックしたら
ここで走って､ 何かを印刷することを確認したい｡
では､ プリントプレーヤーをにしましょう｡
そして､ 「実行」をクリックします｡
プレーヤーを手に入れる一方で､ それは素晴らしいことです｡
でも､ ドット会員をやると
そして､ 「実行」をクリックします｡
あれを見てください｡
ここでプレイヤー1をやると2になるんです｡
同じく｡
そして､ 「実行」をクリックします｡
また真に受けてしまう｡
つまり､ すべてのプレーヤーがメンバーシップをtrueに設定しているのです｡
しかし､ これではダイナミックとは言えません｡
これはクラスオブジェクトの属性で､ このクラスの実際の属性であることを意味します｡
そして､ これは変化がないときに使うものです｡
これは､ すべてのオブジェクトに対して真であり､ 存在することになるので､ 実際に修正することはできません｡
インスタンス化するすべてのオブジェクトがアクセスできるようになるだけです｡
つまり､ これはインスタンス間で変わることはないのです｡
これは､ このクラスの設計図のどこでも使うことができます｡
実のところ､ 例えば､ 「もしも」を調べるとしよう｡
メンバーシップが存在するので､ メンバーシップが真であるかどうかをチェックしているのです｡
つまり､ いつもそうなんです｡
ということで､ ちょっと冗長ですが､ この中に｡
会員制の場合のみ言えることです｡
そして､ 名前と年齢を割り振る｡
しかし､ メンバーシップにアクセスするためには､ セルフ・ドット・メンバーシップを実行する必要があります｡
すべてがうまくいく
そして､ もし私がプレイヤーワンドットネームをしたら｡
これは今でも有効です｡
あるいは､ 実際のプレイヤーキャラクターで参照することもできますね｡
だから､ プレイヤーキャラクターのメンバーシップ｡
そこで､ ここで実行をクリックすると｡
これも､ クラスオブジェクトの属性なので有効です｡
もし私が
どこまで？
おそらくランで｡
これを変えよう｡
叫ぶことや｡
と叫ぶ｡
走りたがるようになる｡
この行を削除してみましょう｡
印刷されるんです｡
My name isというFの文字列｡
そして､ それに名前をつける｡
これ､ うまくいくかな？
試してみよう｡
シャウトと言いましょう｡
そして､ そのメソッドを実行することを確認し､ もう一度shoutをクリックします｡
実行」をクリックすると
11行目でair name is not definedと表示されるのですが｡
ここで11行目に行くと､ nameが定義されていない｡
それはなぜでしょうか？
まあ､ セルフを使ってないので｡
では､ セルフドットネームをやってみましょう｡
そして､ 実行をクリックすると｡
これでよしとする｡
私はトムです｡
私はシンディです｡
なるほど｡
すごい｡
そして､ selfを使うことができるのは､ 最初のパラメータとしてここに渡しているからで､ すべてのメソッドは最初のパラメータとしてselfを受け取るので､
それらを使うことができるのだ｡
しかし､ 実行をクリックするとプレイヤーキャラクタードットネームを行うだけでよいのでしょうか？
エアプレイが出る､ キャラクターに属性名がない｡
さて､ それはなぜでしょう？
なぜなら､ nameはクラスオブジェクトの属性ではないからです｡
実は､ プレイヤーキャラクターの特性や属性ではないんです｡
いいえ､ コンストラクタ関数､ init関数で定義されています｡
そのため､ 慣れるまではちょっと大変です｡
クラスオブジェクトの属性は､ 属性に対して異なるインスタンス間で変化しないものであり､
クラス属性は､ 動的で各クラスオブジェクトに固有のものです｡
実際にこのようにメンバーシップにアクセスできるところでは､ アクセス方法が異なります｡
しかし､ クラスの中のどこかにある名前や年齢にアクセスするためには､ self nameを使わなければならない｡
だから､ クラスの中でメソッドを作るときはいつでも､ こっちで新しいものを作ったとしても､
この新しいものが実行されるとします｡
もう一度言いますが､ selfをパラメータとして使い､ その他に追加したいものがあれば､ それを使います｡
そして､ ここにも｡
2番目のパラメータとして､ クリックしたときに､ 例えば､ 実行するようにします｡
でパスしています｡
こんにちは｡
こんな感じの論調｡
たくさんあると思いますが､ 授業のルールが守れるようになるといいですね｡
このルールを覚えてしまえば､ あとはどんどん楽になっていきます｡
でも､ これは次のビデオでもう少し練習してみましょう｡