首页 > 解决方案 > 尝试插入变量时出错

问题描述

我似乎无法弄清楚“超级”对象没有属性“ getattr ”是什么意思。我不知道为什么我会收到这个错误。

这是一个简单的猜谜游戏,我使用 Kivy 作为 GUI

import math
import kivy
kivy.require('1.11.0')
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.button import Button

class Layout(GridLayout):

    def __init__(self, **kwargs):
        super(Layout, self).__init__(**kwargs)

        self.cols = 3
        self.guesses = 10
        self.hasWon = False
        self.pressedStart = False
        self.ids.start.text = 'Start'
        self.ids.gameText.text = 'Press Start when have chosen your number and are ready!'
        self.ids.instructions.text = 'Choose any number between 0 and 20000 and I will guess it in 10 tries!'
        self.max_guess = 20000
        self.min_guess = 0
        self.guess = math.ceil((self.max_guess - self.min_guess) / 2)
        self.ids.guessText.text = f'Guess left: {self.guesses}'


    def higher(self):
        if self.pressedStart == True and self.hasWon == False:
            self.guesses -= 1
            self.min_guess += self.guess
            self.ids.startText.text = f'Is your number {self.guess}?'
        else:
            pass
    File "guessing_game.py", line 41, in higher
      self.ids.startText.text = f'Is your number {self.guess}?'
    File "kivy/properties.pyx", line 863, in kivy.properties.ObservableDict.__getattr__
    AttributeError: 'super' object has no attribute '__getattr__'

标签: pythonpython-3.xattributeskivykivy-language

解决方案


问题 - AttributeError

  self.ids.startText.text = f'Is your number {self.guess}?'
File "kivy/properties.pyx", line 863, in kivy.properties.ObservableDict.__getattr__
AttributeError: 'super' object has no attribute '__getattr__'

根本原因

这意味着属性或变量ids.startText不存在于 self.ids字典类型属性或对象中,Layout.


推荐阅读