【问题标题】:python "'y' object has no attribute 'x'" when calling a grandparent method x调用祖父方法x时python“'y'对象没有属性'x'”
【发布时间】:2017-02-24 09:03:12
【问题描述】:

我试图从下面的类中调用祖父方法 getColor()。

这是它自己文件中的祖父类:

class IsVisible(object):
    def __init__(self):
        pass
    white = (255,255,255)
    black = (0,0,0)
    red = (255,0,0)
    blue = (0,0,255)
    green = (0,255,0)

def getColor(self):
        return self.color

这是父类和子类。

from IsVisible import *
class Object(IsVisible):
    def __init__(self):
        super(Object, self).__init__() 
        self.posSize = []
    def getPosSize(self):
        return self.posSize

class Rectangle(Object):
    def __init__(self):
        super(Rectangle, self).__init__()
        self.color = self.blue
        self.posSize = [20,50,100,100]

所以我试图通过创建一个对象来调用getColor

rectangle = Rectangle()

然后调用

rectangle.getColor()

但是我遇到了一个错误。即:

AttributeError: 'Rectangle' object has no attribute 'getColor'

现在我不知道如何解决这个问题。我试图用谷歌搜索“python调用祖父母方法”,但我只得到关于如何调用溢出的方法的说明......我相信我已经正确地说明了继承,所以我不知道问题是什么。谁能帮帮我?

【问题讨论】:

  • 在您显示的代码中,getColorIsVisible 下没有缩进。它在你的真实代码中吗?它应该是。 另外请将 Object 更改为另一个名称 --- 与内置 object 混淆的风险太大。 还有,什么 Python 版本?
  • PS 欢迎来到本站!感谢您在这个问题中包含详细信息 --- 许多人忘记这样做。查看tour 了解更多关于提出可以吸引高质量答案的问题的信息。您还可以获得一个阅读整个旅程的徽章。 :)

标签: python class inheritance pygame


【解决方案1】:

如果它只是缩进(没有其他任何东西在我身上跳出来)-

class IsVisible(object):
    def __init__(self):
        pass
    white = (255,255,255)
    black = (0,0,0)
    red = (255,0,0)
    blue = (0,0,255)
    green = (0,255,0)

    def getColor(self):    # <--- indent this
        return self.color

但要注意类变量和实例变量。有关更多信息,请参阅this answer(此处未复制,因为它不是您上述问题的答案)。

另外,请不要使用Object 作为类名:)。它太可能导致与真正的object 混淆,或者让读者对你的意思感到困惑。用ColoredShape 代替IsVisiblePositionedShape 代替ObjectRectangle(PositionedShape) 怎么样?

【讨论】:

  • 哦,我明白了!非常感谢您发现它!并感谢您更改名称的建议。我之前不知道该给它起什么名字。
  • @Slibbfalusken 好消息 --- 乐于助人!如果这个答案解决了你的问题,请你打勾接受这个答案吗?这会将您的问题从“未回答”列表中清除 --- 我们都将获得声誉积分:)。 (tour)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
  • 2018-05-28
  • 1970-01-01
  • 2012-10-15
  • 2022-12-15
  • 2019-10-23
相关资源
最近更新 更多