【问题标题】:Creating methods with the same attributes创建具有相同属性的方法
【发布时间】:2015-05-01 09:53:22
【问题描述】:

我正在为我的游戏开发人员创建代码。需要创建 5 个敌人和普通玩家实例的类。我已经得到它,因此它创建了其中一个的 5 个实例,但返回 <__main__.Player object at 0x020E3410> 作为另一个实例。它们都具有相同的属性。我的代码:

class Player(object):
    def __init__(self, nm, am, wp, ht, tp, ide):
        self.name = nm
        self.ammo = am
        self.weapon = wp
        self.health = ht
        self.type = tp
        self.id = ide

class Enemy(object):
    def __init__(self, nm, am, wp, ht, tp, ide):
        self.name = nm
        self.ammo = am
        self.weapon = wp
        self.health = ht
        self.type = tp
        self.id = ide

    def __str__(self):
        values = "Hi my name is " + self.name + "\n" + "Ammo: " + str(self.ammo) + "\n" + "Weapon: " + self.weapon + "\n" + "Health: " + str(self.health) + "\n" + "I am a: " + self.type + "\n" + "ID #: " + str(self.id)
        return values

    def __str__(self):
        values1 = "Hi my name is " + self.name + "\n" + "Ammo: " + str(self.ammo) + "\n" + "Weapon: " + self.weapon + "\n" + "Health: " + str(self.health) + "\n" + "I am a: " + self.type + "\n" + "ID #: " + str(self.id)
        return values1

def main():
    Enemies = 0
    Players = 0
    while Players < 5:
        play1 = (Player("Joe", 5, "Machine gun", 22, "Hero", Players))
        print (play1)
        Players = Players + 1
        break
    while Enemies < 5:
        ene1 = (Enemy("Julian", 100, "Rocket Launcher", 1337, "Enemy", Enemies))
        print (ene1)
        Enemies = Enemies + 1

main()

【问题讨论】:

    标签: python class methods instance


    【解决方案1】:

    您的 Enemy 类有两个 __str__ 方法,但您的 Player 类没有:

    class Player(object):
        def __init__(self, nm, am, wp, ht, tp, ide):
            self.name = nm
            self.ammo = am
            self.weapon = wp
            self.health = ht
            self.type = tp
            self.id = ide
    
    class Enemy(object):
        def __init__(self, nm, am, wp, ht, tp, ide):
            self.name = nm
            self.ammo = am
            self.weapon = wp
            self.health = ht
            self.type = tp
            self.id = ide
    
        def __str__(self):
            values = "Hi my name is " + self.name + "\n" + "Ammo: " + str(self.ammo) + "\n" + "Weapon: " + self.weapon + "\n" + "Health: " + str(self.health) + "\n" + "I am a: " + self.type + "\n" + "ID #: " + str(self.id)
            return values
    
        def __str__(self):
            values1 = "Hi my name is " + self.name + "\n" + "Ammo: " + str(self.ammo) + "\n" + "Weapon: " + self.weapon + "\n" + "Health: " + str(self.health) + "\n" + "I am a: " + self.type + "\n" + "ID #: " + str(self.id)
            return values1
    

    你可能想要:

    class Player(object):
        def __init__(self, nm, am, wp, ht, tp, ide):
            self.name = nm
            self.ammo = am
            self.weapon = wp
            self.health = ht
            self.type = tp
            self.id = ide
    
        def __str__(self):
            values1 = "Hi my name is " + self.name + "\n" + "Ammo: " + str(self.ammo) + "\n" + "Weapon: " + self.weapon + "\n" + "Health: " + str(self.health) + "\n" + "I am a: " + self.type + "\n" + "ID #: " + str(self.id)
            return values1
    
    class Enemy(object):
        def __init__(self, nm, am, wp, ht, tp, ide):
            self.name = nm
            self.ammo = am
            self.weapon = wp
            self.health = ht
            self.type = tp
            self.id = ide
    
        def __str__(self):
            values = "Hi my name is " + self.name + "\n" + "Ammo: " + str(self.ammo) + "\n" + "Weapon: " + self.weapon + "\n" + "Health: " + str(self.health) + "\n" + "I am a: " + self.type + "\n" + "ID #: " + str(self.id)
            return values
    

    附带说明,为了尽量减少重复代码,您可以创建一个基类,例如:

    class BasePlayer(object):
        def __init__(self, nm, am, wp, ht, tp, ide):
            self.name = nm
            self.ammo = am
            self.weapon = wp
            self.health = ht
            self.type = tp
            self.id = ide
    
        def __str__(self):
            values = "Hi my name is " + self.name + "\n" + "Ammo: " + str(self.ammo) + "\n" + "Weapon: " + self.weapon + "\n" + "Health: " + str(self.health) + "\n" + "I am a: " + self.type + "\n" + "ID #: " + str(self.id)
            return values
    

    然后使用继承创建EnemyPlayer

    class Enemy(BasePlayer):
        # enemy related stuff
    
    class Player(BasePlayer):
        # goody related stuff
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      相关资源
      最近更新 更多