たとえば、私は単純なゲームのための敵クラスを構築しようとしています。各の敵にはタイプのがあり、これはの敵クラスのフィールドであるstatsに影響します。クラスはいつサブクラスを保証しますか?
class Enemy:
#Base Stats for all enemies
name = "foo"
current_health = 4
max_health = 4
attack = 0
defense = 0
armor = 0
initiative = 0
initMod = 0
alive = True
各タイプが
class goblin(Enemy):
name = goblin;
current_health = 8
max_health = 8
attack = 3
defense = 2
armor = 0
def attack(){
//goblin-specific attack
}
...そうのようサブクラスの敵なるべきであるが、この方法は、私は、個々のタイプのクラスを構築しなければならないことを意味し(これは80以上のクラスになります)、それとももっと良い方法がありますか?この敵は、ランダム化されようとしているので、私はまた、キーワードとして種類の名前を使用しています辞書に入れることができタイプを考えていました。私はそれをどのように実装できるかは完全にはわかりませんが。
多くの潜在的なサブクラスを使用すると、おそらく問題をよくモデリングできません。 1つは、「is-a」と「has-a」の関係、場合によってはクラスとクラスのインスタンスを混同しているように思えます。リストされた属性のほとんどは、おそらくクラスまたはサブクラスのコンストラクタ( '__init __()')で初期化されます。また、クラスメソッドのすべての定義は自動的に、クラスのインスタンスである 'self'と呼ばれる第1引数を自動的に受け取ります。だから、あなたは 'def attack(self):'を持つ必要があります。また、Pythonはそのように '{'と '}'を使用しません。 – martineau