python “'y' object has no attribute 'x'” when calling a grandparent method x
我正试图从下面的类中调用祖父母方法getcolor()。
这是它自己文件中的祖父母类:
1 2 3 4 5 6 7 8 9 10 11 | 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 |
这是父类和子类。
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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] |
所以我试图通过创建一个对象来调用
1 | rectangle = Rectangle() |
然后打电话
1 | rectangle.getColor() |
但是我得到了一个错误。即:
1 | AttributeError: 'Rectangle' object has no attribute 'getColor' |
现在我不知道如何解决这个问题。我试过在谷歌上搜索"python call grandrent method",但我只得到如何调用溢出的方法的说明…我相信我说的遗产是正确的,所以我不知道问题出在哪里。有人能帮我吗?
如果这只是一个缩影(没有其他东西会跳出来攻击我)—
1 2 3 4 5 6 7 8 9 10 11 | 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 |
但是要注意类和实例变量。更多信息请参阅此答案(此处不复制,因为它不是上述问题的答案)。
另外,请不要使用