首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法识别以下错误: TypeError: object.__init__()只接受一个参数(要初始化的实例)

无法识别以下错误: TypeError: object.__init__()只接受一个参数(要初始化的实例)
EN

Stack Overflow用户
提问于 2021-03-22 20:39:30
回答 1查看 1.2K关注 0票数 0

我对编程非常陌生,目前我正在跟踪一个视频,为一个项目开发一个应用程序。我似乎不明白是什么导致了下面的错误。

代码语言:javascript
运行
AI代码解释
复制
TypeError: object.__init__() takes exactly one argument (the instance to initialize)

代码如下:(第一个文件)

代码语言:javascript
运行
AI代码解释
复制
class MainApp(App):
    my_friend_id = 1
    def build(self):
        return GUI

    def on_start(self):
        # get database data
        result = requests.get("https://wearable-balance-belt1-default-rtdb.firebaseio.com/" + str(self.my_friend_id) +".json")
        data = json.loads(result.content.decode())
        # get and update avatar
        avatar_image = self.root.ids['home_screen'].ids['avatar_image']
        avatar_image.source = "icons/" + data['avatar']

        banner_grid = self.root.ids['home_screen'].ids['banner_grid']
        workouts = data['workouts'][1:]
        for workout in workouts:
            W = WorkoutBanner(workout_image=workout['workout_image'], description=workout['description'])
            banner_grid.add_widget(W)


    def change_screen(self, screen_name):
        # get the screen manager from the kv file
        screen_manager = self.root.ids['screen_manager']
        screen_manager.current = screen_name
        # screen_manager = self.root.ids


MainApp().run()

第二档案;

代码语言:javascript
运行
AI代码解释
复制
from kivy.uix.gridlayout import GridLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.uix.image import Image

class WorkoutBanner(GridLayout):
    rows = 1

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

        #left floatlayout
        left = FloatLayout()
        left_image = Image(source="icons/" + kwargs['workout_image'], size_hint=(1, .8), pos_hint={"top": 1, "left": 1})
        left_label = Label(text=kwargs['description'], size_hint=(1, .2), post_hint={"top": .2, "left": 1})
        left.add_widget(left_image)
        left.add_widget(left_label)

        self.add_widget(left)

我能得到的任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

发布于 2021-03-23 05:16:34

此错误通常是由于将意外参数传递给基类(object类) __init__()方法造成的。在您的示例中,workout_imagedescription关键字参数将被传递给超类,并最终传递给object类。您可以通过使用kwargs.pop()__init__()方法__init__() WorkoutBanner中调用WorkoutBanner之前删除这些参数来纠正这一点。一个更简单的方法是为这两个参数定义属性,让kivy处理保存并从kwargs中删除它们,如下所示:

代码语言:javascript
运行
AI代码解释
复制
class WorkoutBanner(GridLayout):
    rows = 1
    workout_image = StringProperty('')
    description = StringProperty('')

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

        #left floatlayout
        left = FloatLayout()
        left_image = Image(source="icons/" + self.workout_image, size_hint=(1, .8), pos_hint={"top": 1, "left": 1})
        left_label = Label(text=self.description, size_hint=(1, .2), pos_hint={"top": .2, "left": 1})
        left.add_widget(left_image)
        left.add_widget(left_label)

        self.add_widget(left)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66757352

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文