创建具有相同属性的方法

贾斯汀·法尔

我正在为我的游戏开发人员创建代码。需要同时创建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()
Matsjoyce

您的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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript-添加具有不同值的相同属性

来自分类Dev

使用LINQ从两个具有相同属性的不同列表创建对

来自分类Dev

有什么方法可以创建与父窗口具有相同属性的子窗口?

来自分类Dev

具有相同属性名称的AutoMapper TwoWay映射

来自分类Dev

具有几乎相同属性的模型

来自分类Dev

GraphViz文件中具有相同属性的节点组

来自分类Dev

Sparql查询:查找具有相同属性对象的对象

来自分类Dev

计算具有相同属性值的对象

来自分类Dev

Neo4j:为具有相同属性的节点创建索引

来自分类Dev

从列表生成具有相同属性的对

来自分类Dev

Rails:尝试渲染具有相同属性的用户的图像

来自分类Dev

在matplotlib中绘制具有相同属性的多个函数

来自分类Dev

如何排列具有相同属性值的对象数组?

来自分类Dev

Javscript从具有相同属性,具有相同键和添加量的不同对象创建公共对象

来自分类Dev

如何创建具有相同属性\方法的组件

来自分类Dev

具有相同属性的元素的定位器

来自分类Dev

创建具有按相同属性分组的对象的字符串

来自分类Dev

删除具有相同属性值的重复实体

来自分类Dev

CSS:调用具有相同属性的任何元素

来自分类Dev

解析具有相同属性但名称不同的JSON文件

来自分类Dev

使用一个Cypher查询在具有相同属性值的节点之间创建关系

来自分类Dev

如何添加具有相同属性的多个UIImageViews

来自分类Dev

有什么方法可以创建一个与父窗口具有相同属性的子窗口?

来自分类Dev

如何在pygame中创建具有相同属性的许多实例

来自分类Dev

创建具有相同属性的数据模型的最佳实践

来自分类Dev

创建具有不同属性的相同类的多个bean的最简单方法

来自分类Dev

UIView 及其子类上具有不同方法的相同属性

来自分类Dev

合并具有相同属性的元素

来自分类Dev

如何避免创建具有相同属性的对象

Related 相关文章

  1. 1

    Javascript-添加具有不同值的相同属性

  2. 2

    使用LINQ从两个具有相同属性的不同列表创建对

  3. 3

    有什么方法可以创建与父窗口具有相同属性的子窗口?

  4. 4

    具有相同属性名称的AutoMapper TwoWay映射

  5. 5

    具有几乎相同属性的模型

  6. 6

    GraphViz文件中具有相同属性的节点组

  7. 7

    Sparql查询:查找具有相同属性对象的对象

  8. 8

    计算具有相同属性值的对象

  9. 9

    Neo4j:为具有相同属性的节点创建索引

  10. 10

    从列表生成具有相同属性的对

  11. 11

    Rails:尝试渲染具有相同属性的用户的图像

  12. 12

    在matplotlib中绘制具有相同属性的多个函数

  13. 13

    如何排列具有相同属性值的对象数组?

  14. 14

    Javscript从具有相同属性,具有相同键和添加量的不同对象创建公共对象

  15. 15

    如何创建具有相同属性\方法的组件

  16. 16

    具有相同属性的元素的定位器

  17. 17

    创建具有按相同属性分组的对象的字符串

  18. 18

    删除具有相同属性值的重复实体

  19. 19

    CSS:调用具有相同属性的任何元素

  20. 20

    解析具有相同属性但名称不同的JSON文件

  21. 21

    使用一个Cypher查询在具有相同属性值的节点之间创建关系

  22. 22

    如何添加具有相同属性的多个UIImageViews

  23. 23

    有什么方法可以创建一个与父窗口具有相同属性的子窗口?

  24. 24

    如何在pygame中创建具有相同属性的许多实例

  25. 25

    创建具有相同属性的数据模型的最佳实践

  26. 26

    创建具有不同属性的相同类的多个bean的最简单方法

  27. 27

    UIView 及其子类上具有不同方法的相同属性

  28. 28

    合并具有相同属性的元素

  29. 29

    如何避免创建具有相同属性的对象

热门标签

归档