【问题标题】:kivy: __init__() is missing x required positional argumentskivy:__init__() 缺少 x 个必需的位置参数
【发布时间】:2016-08-12 14:49:39
【问题描述】:

我的电影类如下:

class Movie(Widget):
    def __init__(self, title, image, time, description, trailer, fsk, threeD, **kwargs):
        super(Movie, self).__init__(title, image, time, description, trailer, fsk, threeD, **kwargs)
        title = StringProperty()
        image = StringProperty()
        time = StringProperty()
        description = StringProperty()
        trailer = StringProperty()
        fsk = NumericProperty()
        threeD = BooleanProperty()

当我运行我的脚本时,Python 解释器告诉我:

TypeError: __init__() missing 7 required positional arguments: 'title', 'image', 'time', 'description', 'trailer', 'fsk', and 'threeD'

那我做错了什么?我已经为此苦苦挣扎了一段时间。


与此问题相关的完整源代码:

class Movie(Widget):
    def __init__(self, title, image, time, description, trailer, fsk, threeD, **kwargs):
        super(Movie, self).__init__(title, image, time, description, trailer, fsk, threeD, **kwargs)
        title = StringProperty()
        image = StringProperty()
        time = StringProperty()
        description = StringProperty()
        trailer = StringProperty()
        fsk = NumericProperty()
        threeD = BooleanProperty()

class MainView(Widget):
    def __init__(self, **kwargs):
        super(MainView, self).__init__(**kwargs)
        movies = ListProperty()
        # movies = self.getMovies()
        # for movie in movies:
        #   self.add_widget(movie)

    def getMovies(self, url="http://.../"):
        html = lxml.html.parse(url)
        titles = html.xpath("//h5")
        times = html.xpath("//td[@class='pday ptoday']/span/a")
        trailers = html.xpath("//a[@data-modal-trailer-url]/@data-modal-trailer-url")
        fsks = html.xpath("//tr[@data-fsk]/@data-fsk")
        movies = list()
        # for i in range(0, len(titles)):
        #   movie = Movie(titles[i].text, "images[i]", times[i].text, "", "https:" + trailers[i][:-11], fsks[i], "no")
        #   movies.append(movie)
        return movies

【问题讨论】:

  • 您是否在为您的__init__ 调用提供参数?你可能不是。在初始化 Movie 类时提供它们。
  • 我没有创建任何 Movie 类型的对象,所以我不知道为什么 Python 解释器已经在不知道我将传递什么和多少参数的情况下苦苦挣扎。
  • 好吧,有些东西正在尝试初始化您的 Movie 类,在出现此错误之前您在解释器中运行了什么?
  • @Jim 我同意产生错误的执行行可能不包含在问题中。您是否尝试过从类中访问方法?当您执行以下操作时,这也是一个常见错误:title = Movie.getTitle(),即在没有实例化类实例的情况下调用方法
  • 不,Movie 类中的任何方法都不会在任何地方被调用。我已将这些行注释掉。这可能是特定于 kivy 的继承吗?

标签: python python-3.x kivy


【解决方案1】:

我发现 kv-lang-file 是这个对象初始化错误的原因。所以我不知道如何解决它,但我认为这是另一个问题,因为这是关于为什么 __init__ 被调用

【讨论】:

    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 2021-02-08
    • 2020-06-13
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多