私はpythonでsuper()とクラスの継承について教えようとしていません。次のコードを与えられれば、誰かが私が何が起こると期待するのかを教えてもらえますか?Pythonクラスの継承とsuper()の動作?
import random
enemy_list = []
class Entity(object):
def __init__(self, name=''):
self.name = name
self.health = 1
self.attack_power = .05
class Enemy(Entity):
def __init__(self, name, target):
super(Enemy, self).__init__(name)
self.lvl = random.randint(target.lvl - 2, target.lvl + 2)
self.health *= self.lvl * target.health
self.attack_power *= self.lvl
def createEnemy(enemy):
enemy_list.append(Enemy(enemy, player))
return enemy_list
enemy_amount = random.randint(1, 5)
while enemy_amount > 0:
createEnemy(Enemy("goblin", player))
enemy_amount -= 1
for i in enemy_list:
print "(", i.lvl, i.name, i.attack_power, i.health, ")"
なぜこのコードの出力は次のとおりです。代わりに、期待の
(2 <__main__.Enemy object at 0x7faa040b3050> 0.1 80)
(5 <__main__.Enemy object at 0x7faa040b30d0> 0.25 200)
(3 <__main__.Enemy object at 0x7faa040b3150> 0.15 120)
(5 <__main__.Enemy object at 0x7faa040b31d0> 0.25 200)
:
(2 goblin 0.1 80)
(5 goblin 0.25 200)
(3 goblin 0.15 120)
(5 goblin 0.25 200)
「プレーヤー」とは何ですか、それは「敵」のインスタンスですか? – edhurtig
@edhurtig playerはエンティティのもう一つのインスタンスです。Enemyクラスに表示されているものとかなり似ていますが、数学(ターゲットデータがない対象はありません) – user6195779
私が話していることはほとんど考えていないでしょう。 ... 私はここでそれを使用して敵のレベルを決定し、そのレベルに応じてその属性を調整します。 – user6195779