设置实例变量Python

2024-09-28 01:32:46 发布

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

我知道有很多问题在问这个,但我没有找到一个方法来回答我到底想要什么。当我运行这段代码并随后执行getcomponent()时,我得到一个错误,'ListItem'对象没有属性'ing'。请提前帮助和感谢。你知道吗

class ListItem(FloatLayout):

  def __init__(self, ing):
      super(ListItem, self).__init__()
      self.ing = ing

  def getIngredient(self):
    return self.ing.name  

我也在kivy中放入方框布局的对象实例上调用它。你知道吗


Tags: 对象方法代码self属性initdef错误
1条回答
网友
1楼 · 发布于 2024-09-28 01:32:46

好吧,如果我使用stub/empty FloatLayout类将代码粘贴到Python 2.7.10 iPython会话中,那么仅用一个字符串实例化并调用getcomponent()方法得到的错误是:

AttributeError: 'str' object has no attribute 'name'

。。。这似乎完全可以预料。如果我创建一些对象并给它一个.name属性,那么代码就可以正常工作。你知道吗

因此,您的问题可能涉及到真实FloatLayout父类的一些细节;或者您正在使用的Python版本(或者两者都涉及)。你知道吗

一般来说,我希望您在调用super()之前添加自己的自定义属性(.ing)。。。如果你在添加东西,而不是骑在上面。(一般来说,我还希望您将链上的任何初始化参数传递给您的超类(在过滤掉您截取的任何特定于派生/子类的参数之后)。如果操作得当,即使父类的实现发生了一些变化,即使类的后代试图利用父类尚未想象的扩展,也应该使您相对健壮。你知道吗

(我知道,那种“未来证明”是模糊的、抽象的,甚至有些脆弱。。。但总比完全忽略这个问题要好)。你知道吗

相关问题 更多 >

    热门问题