为什么我的python对象列表互相添加?

时间:2019-06-30 05:25:34

标签: python list object

我正在用python做一个简单的基于文本的宠物小精灵游戏。培训师有一个口袋妖怪物品清单。进行战斗时,我会使用随机数量的神奇宝贝制作新的教练。但是无论出于何种原因,培训师的宠物小精灵在游戏IE中都充满了其他宠物小精灵对象。

我已完成所有工作以解决此问题,我重新编写了一些东西,进行调试,精疲力尽,老实说,我什至问了一个有几年经验的朋友,他感到困惑,代码中没有错误。

P=Player()
class Trainer:
    Team=List()

def TC(self):
        T = Trainer()
        amount = Rng(6)

    while len(T.Team) <= amount:
        Poke = Pokemon()
        Poke.Name = " NotWild"
        Poke.type = " L"
        Poke.Level = Rng(math.floor(P.LevelMean))
        Poke.Attack = Rng(6)
        Poke.Defence = Rng(6)
        Poke.Calc()
        Poke.Heal()
        T.Team.append(Poke)
        for Poke in T.Team:
            print(Poke.Name)
    T.calcLM()
    print("Trainer")
    TrainerCombat(T, P.Team[P.n])
    empty()

它创建一个Trainer对象。创建Rng(6)个宠物小精灵,并将它们添加到T。每张照片的名字都由团队组成,但是玩家Pokemon被添加以及它运行的一些荒野,没有错误会停止该程序,而不仅仅是不应该这样做,这会使您与自己的口袋妖怪战斗变得更加艰辛,我不知道为什么?

1 个答案:

答案 0 :(得分:1)

尽管类Team中的类变量Trainer可能是demo,但是您的代码会引发错误,并且缺少部分内容,因此很难直接说出问题所在。

无论如何,这种设计对我来说并没有立即意义,因此我重写了一个可能对您有用的裸露骨骼:

import random


class Player:

    def __init__(self):
        self.team = []


class Pokemon:
    def __init__(self, name, ptype, level, attack, defense):
        self.name = name
        self.ptype = ptype
        self.level = level
        self.attack = attack
        self.defense = defense

    def calc(self):
        pass

    def heal(self):
        pass

    def __str__(self):
        return f'Pokemon {self.name}: type:{self.ptype}, level:{self.level}, attack:{self.attack}, defense:{self.defense}'


class Trainer:
    pass


def create_player_team(player):
    amount, maxval = 6, 6

    while len(player.team) < amount:
        name = "NotWild"
        ptype = "L"
        level = random.randrange(maxval)
        attack = random.randrange(maxval)
        defense = random.randrange(maxval)
        player.team.append(Pokemon(name, ptype, level, attack, defense))


player = Player()
create_player_team(player)

for pok in player.team:
    print(pok)