あと1本､ 希望の柱を｡
カプセル化､ 抽象化､ 継承の話をしました｡
そして､ この4つ目は､ ポリモーフィズムというかなり難しい言葉を使っています｡
どういう意味ですか？
まあ､ polyはmany､ more ismはform so manyの意味です｡
さて､ メソッドはオブジェクトに属していることがわかりましたね｡
selfキーワードは､ インスタンス化されたオブジェクトに作用するために使用します｡
さて､ Pythonでは､ このポリモーフィズムという考え方は､ オブジェクトクラスが同じメソッド名を共有することができる方法を指します｡
しかし､ これらのメソッド名は､ どのオブジェクトがそれを呼び出すかによって､ 異なる動作をすることがあります｡
さて､ 非常に分かりにくい表現になってしまいました｡
では､ コードを見てみましょう｡
ユーザーであるウィザードとアーチャーのクラスがあります｡
また､ ポリモーフィズムで述べたように､ 異なるオブジェクトクラスはメソッド名を共有することができます｡
ですから､ ここではTACを共有していますが､ 属性によってそれぞれ違うことをやっています｡
例えば､ ウィザード1回攻撃をするとき｡
では､ そうしましょう｡
ウィザード1ドットアタック｡
WizardはArcherに対して特別な意味を持つので､ Runをクリックするとパワー60で攻撃することができます｡
違うんです｡
つまり､ 呼び出しているオブジェクトが同じなのでメソッド名は同じですが､ 出力は異なるものになるのです｡
ですから､ 実はここで非常に面白いことができるんです｡
例えば､ ウィザード1があるとすると､ アーチャー1もあって､ アーチャー1がロビンになりますね｡
そして､ ロビンは今30時間です｡
ここでできるのは､ 実際に呼び方を変えてみることです｡
例えば､ player attackという全く新しい関数を作ることができます｡
そして､ このプレイヤーの攻撃はキャラクターを取ります｡
そして､ この中でキャラクター､ ドット､ アタックと言うことができるのです｡
そして今､ このコードを実行し､ こう言うと｡
プレイヤーの攻撃
ウィザード1
そして､ これを実行します｡
パワー・オブ・ワンで攻める｡
もし私が攻撃をする場合､ 「走る」をクリックしたら､ アーチャーをここに入れてください｡
同じ関数を呼び出しても､ 渡すオブジェクトによって出力が異なることがわかりますね｡
ポリモルフィズム｡
もう一つの方法は､ forループを行う場合です｡
例えばキャラクターを入れるとして､ ウィザードとアーチャーをリストに追加します｡
そして､ ここにプリントするか､ 文字ドットアタックを実行しましょう｡
ここで実行をクリックすると
もう一度言いますが､ オブジェクトが違うので同じメソッドを呼び出しているにもかかわらず､ 2つの異なる出力があります｡
そして､ これは本当に強力なコンセプトですよね｡
なぜなら､ 仮にユーザーが攻撃を受けたとしても､ 私たちの特定のニーズに従ってこれをカスタマイズすることができるからです｡
方法です｡
そして､ このデフォルトの攻撃方法は､ 例えば､ print､ ただのユーザーだから何もしない､ です｡
これらを実行して､ 仮にプリントウィザード1ができたとしても｡
そして､ 「実行」をクリックするとドットアタックするとします｡
元の攻撃が何であれ､ 上書きされます｡ なぜなら､ そのメソッドはすでにウィザードクラスに存在するからです｡
しかし､ ユーザーとウィザードの両方に攻撃方法を実行させたかったとします｡
どうすればいいのでしょうか？
今すぐ
これは､ 次のビデオでもう少し詳しく説明します｡
でも､ とりあえず言えるのは､ ユーザードットアタックです｡
そして､ それを自己に与える｡
なぜなら､ ここではユーザーをパラメータとして受け入れているからです｡
そして､ ユーザードットアタックを実行することができるんだ｡
では､ ここでどうなるのか見てみましょう｡
実行」をクリックすると
何もせず､ パワー60で攻撃しています｡
つまり､ ポリモーフィズムによって､ 多くの形態を持つことができるのです｡
これらの派生クラスのメソッドを再定義できるのが､ WizardとArcherです｡
そして､ インスタンス化されたオブジェクトは､ ポリモーフィズムに基づき､ さまざまな形で振る舞えるようになる｡
そして､ これは私たちの特定のニーズに合わせてクラスを変更することができるので便利です｡
しかし､ Wizardの内部でユーザーからの攻撃などを使いたい場合にも､ 同じことを繰り返す必要はありません｡
というわけで､ これにて終了です｡
OP封入の4本柱｡
抽象化すること｡
継承､ そして最後にポリモーフィズム｡
今すぐ
いくらビデオや本を読んでも､ いつ何を使うかを正確に教えてくれるわけではありません｡
しかし､ ここでは､ これらの力がOPで存在することを理解することです｡
ああ､ ポリモーフィズムを実装しないといけないんだ」と言うことはないでしょう｡
いや､ たいていはコーディングしているうちに､ たまたまポリモーフィズムを強調するようなコーディングになってしまうんです｡
これは､ 大きな言葉ですが､ まさに「OPの力」です｡
一日の終わりに､ 私たちはそれらを使って､ 効率的でクリーンな方法でコードを構成する方法を学びました｡
そして､ そこが肝心なところです｡
それは､ コードの整理のためです｡
さて､ このユーザーアタックのセルフをやった時に､ ちょっと戸惑った方もいらっしゃるかもしれません｡
次回のビデオでは､ この点をもう少し掘り下げてみたいと思います｡
その中でお会いしましょう｡