Sieht aus wie Sie Python neu sind. Und zur Programmierung im Allgemeinen. Das ist in keiner Weise schlecht; selbst die Besten von uns müssen irgendwo anfangen. Hier sind einige Tipps von jemandem, der Python benutzt, seit er 12 war. (Okay, das sind nur drei Jahre oder so, aber immer noch ...)
Erstens würde ich stark empfehlen mit Python 3 anstatt Python 2 wenn Sie kann es helfen. Python 2 ist seit vier Jahren veraltet, und dieses Programm wird auf Python 3 mit wenig bis keiner Modifikation funktionieren.
Zweitens ist in Python alles pass-by-value. Zuweisen einer Variablen in einer Funktion übergeben wird außerhalb der Funktion nicht, dass Wert der Variablen ändern, zB:
>>> def myfunc(a):
... a=2
...
>>> a = 1
>>> myfunc(a)
>>> print(a)
1
>>>
(Beachten Sie, dass bei der interaktiven Eingabeaufforderung, die meisten Anrufe print()
unnötigen sind einfach im Namen einer Variablen eingeben. (oder ein Ausdruck wie 1+1
oder someFunction()
) wird seinen Wert drucken.)
Die Ausnahme zu dieser Regel ist, dass einige Objekte (wie Listen) veränderbar sind. Ihr Inhalt (aber nicht die Listen selbst) aus innerhalb einer Funktion geändert werden:
>>> def myfunc2(l):
... l[0] = 2
...
>>> mylist = [1, 2, 3]
>>> myfunc2(mylist)
>>> mylist
[2, 2, 3]
>>>
Beachten Sie, dass die myfunc Funktion die Liste selbst nicht ändern, es verändert nur einen Wert in der Liste.
Saiten fallen nicht in diese Kategorie. In Python sind Zeichenfolgen unveränderlich. Sobald ihre Inhalte festgelegt sind, können sie nicht geändert werden. Die einzige Möglichkeit, den Wert einer Zeichenfolge zu ändern, besteht darin, der Variablen einen neuen Wert zuzuweisen, sodass sie den alten Wert vergessen lässt. In Python können Funktionen mehrere Werte als Tupel zurückgeben, das wie eine Liste ist, aber Klammern (die optional sind und weggelassen werden können) anstelle von eckigen Klammern, und ihr Inhalt kann nicht geändert werden (Aufruf von myfunc2) von oben auf ein Tupel würde einen Fehler verursachen).Ein weiteres praktisches Feature ist Tupel Auspacken (die auch auf den Listen funktioniert und jede andere Art von Sequenz) wie folgt:
>>> mytuple = (1, 2, 3)
>>> mytuple
(1, 2, 3)
>>> a, b, c = mytuple
>>> a
1
>>> b
2
>>> c
3
>>>
Hier ist eine Version von UpdateEpg()
ist, dass diese Dinge berücksichtigt:
def UpdateEpg(self):
conn = database.connect(self.profilePath)
cur = conn.cursor()
cur.execute("SELECT title, start_date, stop_date FROM programs where channel=? LIMIT 2", [channel])
row = cur.fetchone()
program_title = row[0]
program_start_date = str(row[1])
program_stop_date = str(row[2])
return program_title, program_start_date, program_stop_date
program_title, program_start, program_finish = self.UpdateEpg()
Sorry über die Wand des Textes, aber ich möchte sicherstellen, dass die Leute verstehen, was ihr Programm tut, bevor sie einfach Code von StackOverflow kopieren und einfügen.
Die Methode gibt ein Tupel mit drei Elementen zurück. Sie können einfach in den Rückgabewert indexieren, z. '[0]', '[1]', '[2]'. –
Danke, wenn ich das versuche: 'program_title = self.UpdateEPG (0)' es wird mir einen Fehler geben 'AttributError:' MyPlayer 'Objekt hat kein Attribut' UpdateEPG''. Irgendeine Idee? –
Sie müssten mehr von Ihrem Code zeigen. Es sieht so aus, als ob "UpdateEpg" eine Klassenmethode sein soll, und der Code, der es aufruft, sieht so aus, als ob es Teil einer anderen Methode derselben Klasse sein soll. Wenn das nicht der Fall ist, wird es wahrscheinlich nicht funktionieren. Aber Sie müssen einen vollständigeren Code-Auszug veröffentlichen, bevor wir wirklich sehen können, was Sie tun. –