鱼C论坛

 找回密码
 立即注册
查看: 1247|回复: 2

[已解决]Python关于类与对象调用变量问题

[复制链接]
发表于 2020-8-20 16:22:46 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 还差几 于 2020-8-20 16:30 编辑

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

不知为什么代码每次复制上去只剩这个完整代码在第一条回复
最佳答案
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[Bullet3.direction%40]
        

        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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[Bullet3.direction%40]
        

        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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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[direction%40]#还有这,同上
        

        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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 08:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表