AttributeError:类型对象“platform”没有属性“y”

2024-09-30 04:37:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编程一个平板电脑,并试图检查播放器是否在空中。如果是这样的话,它们会下降直到碰到平台,然后上升直到不再碰到平台(这样它们就不会下沉)。要做到这一点,我要检查玩家的y位置(加上高度)是否大于平台的位置(指整个“平台”级别),但这不起作用:

以下是平台的初始化代码:

class platform(object):
    def __init__(self, x, y, size):
        self.x = x
        self.y = y
        self.size = size

我指的是:

def touchGround(self):
    while self.hitbox[1] + self.hitbox[3] > platform.y:
        self.speedY -= 1
        self.y += speedY

def fall(self):
    while self.hitbox[1] + self.hitbox[3] < platform.y:
        self.speedY += 1
        self.y += speedY
        touchGround()

但是,我得到一个错误:

AttributeError: type object 'platform' has no attribute 'y'

Tags: selfsizeobjectdef编程玩家平台播放器
1条回答
网友
1楼 · 发布于 2024-09-30 04:37:24

您需要创建platform的实例,以便它具有y属性。下面是一个简单的例子来说明为什么会出现这种情况:

class Something:

    def __init__(self, x, y):
        self.x = x
        self.y = y

if Something.y > 2:
    print('success')

根本没有定义任何值,因此进行任何形式的比较都是不合理的。我们可以用以下方法解决这个问题:

my_something = Something(1, 3)
if my_something.y > 2:
    print('success')

或者,您可以通过定义类变量来修复它:

class Something:
    x = 1
    y = 3

if Something.y > 2:
    print('success')

在您的例子中,我假设您将有多个平台,因此在类级别定义xy可能没有意义,因为您需要具有不同属性的多个实例

另外,有关命名约定,请参见PEP8。这些对于清楚地理解人与人之间的代码非常重要

相关问题 更多 >

    热门问题