猿问

类“...”的未解析的属性引用“...”

当我调用Zombie类中的render()方法时,我想将Zombie对象的一个实例添加到ZombieList.list中。当我尝试这样做时,它说


list类的未解析属性引用ZombieList。


我应该尝试以另一种方式做到这一点吗?


class ZombieList:

    def __init__(self):

        self.list = []

        for zombie in self.list:

            ds.blit(zombie.image, (1000, random.randint(10, 790)))


class Zombie(object):

    def __init__(self):

        self.attack = 3

        self.speed = 5

        self.health = 30

        self.image = pygame.image.load("Assets/green zombie.png")


        self.zombieList = []


    def render(self):

        ZombieList.list.append(self)


函数式编程
浏览 1606回答 3
3回答

ibeautiful

您必须创建一个ZombieList对象,您可以将Zombie对象附加到其中。您可以添加一个类的对象向类Zombie:class Zombie(object):    zombies = ZombieList()    def __init__(self):        self.attack = 3        self.speed = 5        self.health = 30        self.image = pygame.image.load("Assets/green zombie.png")    def render(self):        Zombie.zombies.list.append(self)

慕盖茨4494581

您不能附加到类列表。您需要附加到类的实例。例如:class ZombieList:    def __init__(self):        self.list = []        for zombie in self.list:            ds.blit(zombie.image, (1000, random.randint(10, 790)))my_zombie_list = ZombieList() # create an instanceclass Zombie(object):    def __init__(self):        self.attack = 3        self.speed = 5        self.health = 30        self.image = pygame.image.load("Assets/green zombie.png")        self.zombieList = []    def render(self):        my_zombie_list.list.append(self) # refer to the previously created instance

摇曳的蔷薇

没有属性list在ZombieList。只有在您创建了一个ZombieListthrough eg 之后,self.zombie_list = ZombieList()您才能通过 使用您的列表self.zombie_list.list。尽管如此,我想这可能不是您想要的设计:我想您不希望ZombieList每个人都有一个Zombie. 相反,初始化Zombie对象的人也应该负责维护ZombieList实例。您还会遇到其他问题。例如,在循环self.list = []for zombie in self.list:    ds.blit(zombie.image, (1000, random.randint(10, 790)))永远不会有任何影响,因为self.list在执行该代码时始终为空(因为您已在上一行将其定义为空)。
随时随地看视频慕课网APP

相关分类

Python
我要回答