【问题标题】:how to call python class list objects如何调用python类列表对象
【发布时间】:2013-06-02 20:47:53
【问题描述】:
class Ship:

    def __init__(self, pos, vel, angle, image, info):
        self.pos = [pos[0],pos[1]]
        self.vel = [vel[0],vel[1]]


def keydown(key):

    global current_key

    current_key=simplegui.KEY_MAP['down']

    pos_increment=15
    posx=Ship.shipx
    posy=Ship.shipy

    print current_key
    print posx,posy

错误是 AttributeError: 'Ship' 对象没有属性 'shipx'。请帮助

【问题讨论】:

  • 请提供更多船级代码。 shipx 和 shipy 是在哪里定义的?

标签: list class object python-2.7


【解决方案1】:

你必须先实例化你的类:

ship1 = Ship( pos, vel, angle, image, info)

之后就可以使用类的方法和属性了:

posx, posy = ship1.pos

根据我们的 cmets,我认为这将满足您的需求:

class Ship:

    def __init__(self, pos, vel, angle, image, info):
        self.pos = list(pos)
        self.vel = list(vel)

    def move(self, key):
        if key=='left':  self.pos[0] -= self.vel[0]
        if key=='right': self.pos[0] += self.vel[0]
        if key=='down':  self.pos[1] -= self.vel[1]
        if key=='up':    self.pos[1] += self.vel[1]


#example
ship1 = Ship( (0,0), (10,10), angle=None, image=None, info='')

def keystroke(key):
    global current_key
    ship1.move(key)

我不确定simplegui 是如何工作的,但通过这种方式,您可以有效地映射所有击键可能性。此外,假设速度 (vel) 表示每次击键需要改变多少像素。

【讨论】:

  • shipxshipy 从未为 Ship 或其实例定义,但这要么是问题的疏忽,要么完全是一个单独的问题。
  • 你的意思是它们是类属性吗?
  • keydown 是 Ship 类之外的一个函数
  • @bama,好的,这很清楚,但对我来说,不清楚你打算用 shipxshipy 做什么
  • @bama 在这种情况下,您可以执行以下操作:ship1.pos[0] += 1 将 1 加到 x 位置,ship1.pos[1] += 1 将 1 加到 y 位置...跨度>
【解决方案2】:

您必须先定义 shipx 和 shipy 才能访问它们或使用 pos 变量:

class Ship:
    def __init__(self, pos, vel, angle, image, info):
        self.pos = pos
        self.vel = vel

# create instance of your ship
ship = Ship(pos, vel, angle, image, info)

def keydown(key):
    global current_key

    current_key = simplegui.KEY_MAP['down']

    pos_increment = 15
    # change y-position of the ship on key press
    ship.pos[1] += pos_increment

【讨论】:

  • 当我按下 keydown 或 keyup 时,我必须更改 pos[] 值。pos 是 Ship 类中的列表。每次单击 keydown 或 keyup 时,我必须将值更新 10 个像素
猜你喜欢
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 2021-12-31
相关资源
最近更新 更多