私はこれ以外の言い方を本当に知りません:これは機能しますか、そしてブッシュステートメントのようにそれにもっと追加できますか?
class Enemy():
def __init__(self, name, HP, skills, attack, defense, loot, expget, flvrtxt):
self.name = name
self.HP = health
self.skills = skills
self.attack = attack
self.defense = defense
self.loot = loot
self.expget = expget
self.flvrtxt = text
bush = Enemy()
bush.name = "Bush"
bush.HP = 10
bush.skills = "none"
bush.attack = 0
bush.defense = 5
bush.loot = "A stick"
bush.expget = 50
bush.flvrtxt = "Just a bush, it cannot attack"
さらに追加するということは、基本的にブッシュの定義をコピーして貼り付け、統計を変更して、まったく新しい敵を作ることができるということですか?たとえば、これを追加できますか?:
imp = Enemy():
imp.name = "Imp"
imp.HP = 50
imp.skills = "none"
imp.attack = 10
imp.defense = 10
imp.loot = "gold"
imp.expget = 150
imp.flvrtxt = "Cliche RPG enemy"
私の頭から離れて、私はあなたが達成しようとしていることに応じてあなたがこれについて行くことができる2つの方法を考えることができます。
コードを構造化する方法でEnemy
、引数によって定義されるクラスのインスタンスを作成できます。@Patrick Haughがコメントセクションで指摘したように、Enemy
メソッドにタイトルを付けるように更新すると、構築時にのすべての属性を明示的に設定できます__init__(self, name, HP, skills, attack, defense, loot, expget, flvrtxt)
。
class Enemy(object):
def __init__(self, name, HP, skills, attack, defense, loot, expget, flvrtxt):
self.name = name
self.HP = HP
self.skills = skills
self.attack = attack
self.defense = defense
self.loot = loot
self.expget = expget
self.flvrtxt = flvrtext
bush = Enemy("Bush", 10, "none", 0, 5, "A Stick", 50, "Just a bush, it cannot attack")
imp = Enemy("Imp", 50, "none", 10, 10, "gold", 150, "Cliche RPG enemy")
または、特定のタイプのBush
esとImp
sをインスタンス化する場合は、クラスをサブクラス化する独自のクラスとして作成しEnemy
、関連するフィールドに独自のデフォルト実装を設定することをお勧めします。
class Bush(Enemy):
def __init__(self):
super(Bush, self).__init__("Bush", 10, "none", 0, 5, "A Stick", 50, "Just a bush, it cannot attack")
class Imp(Enemy):
def __init__(self):
super(Imp, self).__init__("Imp", 50, "none", 10, 10, "gold", 150, "Cliche RPG enemy")
この方法では、次のようなコードを記述して、クラスBush
でaに対して定義したすべてのフィールドが事前に入力されたをインスタンス化できますBush
。
bush = Bush();
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加