Ich habe gerne mehrere Klassen dank x
Kommunikation ist ein Objekt der Klasse foo:einen Wert aus einer Klasseneigenschaft in Kivy Python abwartend
class foo(EventDispatcher):
def variable_input(self, *args):
self.a='This is an observed value being changed'
def __init__(self):
self.a=StringProperty('')
jetzt erstelle ich ein Objekt X
eine Instanz der Klasse foo ist
X=foo()
ich habe einen Screen
als Teil eines ScreenManager
eine Label
mit ID vystup
class Hlavne(Screen):
pass
Was ich versuche zu tun, ist die Funktion on_propname
mit X.a
als Propname schreiben. Wie zeige ich auf den Wert, der zur Instanz einer anderen Klasse gehört.
Ich habe gelesen:
WarnungVorsicht mit ‚on_‘. Wenn Sie einen solchen Callback für eine Eigenschaft erstellen, die Sie erben, dürfen Sie nicht vergessen, auch die Superklassenfunktion aufzurufen.
Aber wie es mit kivys Dokumentation üblich ist, sagt es Ihnen nicht wie.
Ich werde morgen überprüfen, ich gebe zu, als ein neuer Python-Benutzer, finde ich es schwierig zu verstehen Syntax von Super. Danke für jetzt – Tomas
@Tomas Nun, grob gesagt, stellen Sie sich eine Klasse 'A' mit einer Methode' A.x' vor. Jetzt erstellen Sie eine weitere Klasse 'B' mit der gleichnamigen Methode' B.x'. Da "B" von "A" erbt, kann es auf alles (hauptsächlich) von der Klasse "A", also sogar die "x" -Methode zugreifen, jedoch überschreiben Sie mit dem Erstellen von "B.x" den Inhalt der vererbten "A.x" -Methode. Um das Überschreiben zu stoppen, dh selbst den Code von'Ax' auszuführen, nennt man 'super (aktueller Klassenname, aktuelle Instanz) .method (args)' was in diesem speziellen Fall 'super (B, self) .x() wäre. '. Auf diese Weise können Sie 'A.x' vor oder nach dem neuen' B.x' Code ausführen. – KeyWeeUsr
@Tomas siehe https://Stackoverflow.com/documentation/python/419/classes/3912/multiple-inheritance für mehr, gibt es nützliche Beispiele. :) – KeyWeeUsr