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

时间:2019-08-03 10:18:58

标签: python pygame

我正在编写一个平台游戏,并试图检查玩家是否在空中。如果是这样,它们会跌落直到接触平台,然后上升直到不再接触平台(这样它们才不会下沉)。为此,我要检查玩家的y位置(加上身高)是否大于平台的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'

1 个答案:

答案 0 :(得分:0)

您需要创建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可能没有意义,因为您需要具有不同属性的多个实例。

另外,请参阅rancher了解命名约定。这些对于清晰理解人与人之间的代码很重要。