【发布时间】: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