还差几 发表于 2020-8-20 16:22:46

Python关于类与对象调用变量问题

本帖最后由 还差几 于 2020-8-20 16:30 编辑

如何才能调用 方法move 中调用 direction变量

不知为什么代码每次复制上去只剩这个{:5_94:}完整代码在第一条回复

sunrise085 发表于 2020-8-20 16:22:47

class Bullet3(pygame.sprite.Sprite):   
    def __init__(self,position):
      pygame.sprite.Sprite.__init__(self)

      self.image=pygame.image.load('images/bullet1.png').convert_alpha()
      self.rect=self.image.get_rect()
      self.rect.left,self.rect.top=position
      self.uspeed=12
      self.active=False
      self.mask=pygame.mask.from_surface(self.image)

    direction = -1#这个是类成员变量,调用的时候需要使用类名.成员变量名
    def move(self):
      Bullet3.direction+=1
      lspeed=(1,1,2,2,3,3,4,5,5,6,6,7,7,8,8,9,10,10,11,12,12,11,10,10,9,8,8,7,7,6,6,5,5,4,3,3,2,2,1,1)
      self.rect.top -=self.uspeed
      self.rect.left += lspeed
      

      if self.rect.top<0|self.rect.left<0:
            self.active=False

    def reset(self,position):
      self.rect.left,self.rect.top=position
      self.active=True

还差几 发表于 2020-8-20 16:24:58

本帖最后由 还差几 于 2020-8-20 16:28 编辑

class Bullet3(pygame.sprite.Sprite):   
    def __init__(self,position):
      pygame.sprite.Sprite.__init__(self)

      self.image=pygame.image.load('images/bullet1.png').convert_alpha()
      self.rect=self.image.get_rect()
      self.rect.left,self.rect.top=position
      self.uspeed=12
      self.active=False
      self.mask=pygame.mask.from_surface(self.image)

    direction = -1#这里明明已经定义
    def move(self):
      global direction
      direction+=1#但在这却报错 NameError: name 'direction' is not defined 名称错误:未定义名称“direction”
      lspeed=(1,1,2,2,3,3,4,5,5,6,6,7,7,8,8,9,10,10,11,12,12,11,10,10,9,8,8,7,7,6,6,5,5,4,3,3,2,2,1,1)
      self.rect.top -=self.uspeed
      self.rect.left += lspeed#还有这,同上
      

      if self.rect.top<0|self.rect.left<0:
            self.active=False

    def reset(self,position):
      self.rect.left,self.rect.top=position
      self.active=True
页: [1]
查看完整版本: Python关于类与对象调用变量问题