Python: Immer baseclass Werte von abgeleiteten Klasse

Hoffe das ist klar genug:

class myParent():
    def __init__( self ):
        self.parentNumber = 5

class Child( myParent ):
    def __init__( self ):
        self.childNumber = 4

    def multiplyNumbers( self ):
        print myParent.parentNumber * self.childNumber

p = Child()
p.multiplyNumbers()

Möchte ich um die parentNumber einzeln, und dann erreichen, dass die Nummer über die Kind-Klasse, und in diesem Fall verwenden Sie es für einige der Multiplikation.

Ich bin neu in der OOP-Bereich, so dass Allgemeine Hinweise auf die Vererbung ist ebenso willkommen!

Mehr info:
Ich bin der Gestaltung einer Projekt-management-Lösung für vfx-basierte Projekte, und ich Spiele mit Klassen und Vererbung um zu sehen, wie Sie mir helfen können am meisten.

Gerade jetzt, ich habe die top-Klasse, Projekt -, und einer abgeleiteten Klasse, Erschossen. Geschossen hat ein selbst.Länge variabel mit der Länge der spezifischen Aufnahme. Es hat auch eine getLengthInSeconds () - Methode, die verwendet selbst.Länge zusammen mit dem Projekt.fps, um zu bestimmen, die Länge in Sekunden. Das Projekt hat setFps () - Methode, in der die fps eingestellt ist, nachdem eine Instanz der Klasse erstellt wird.

Ich bin eine Art verwendet, um Variablen mit einem Präfix selbst. und haben nicht experimentiert viel mit Klassen mit der "globalen" Variablen, ohne sich selbst zu. . Wenn ich alles global, nicht-selbst., Ich kann das Projekt verwenden.fps ohne Hektik, aber ich bin immer ein "schlechter Programmierstil" Warnung in meinem neckhair. Gibt es vielleicht eine bessere, mehr ordentlich, so?

Edit:

Nach einiger Lektüre, super() scheint ein bisschen gefährlich und ein bisschen mehr als ich brauche, denke ich. Ich bin hauptsächlich mit single-Vererbung-Klassen und sind nicht einmal sicher, wie man die Verwendung von Diamant-Hierarchien.. Ist es ein sicherer Weg, den Zugang zu übergeordneten Variablen und Methoden, die nicht eingeschlossen sind super()?

Edit:

Allright, zu sehen, ob dies Sinn macht oder ob ich denken werde, alles falsch.

Ich bin auf der Suche an den Klassen und der Vererbung von Gruppen und Kinder. Ein Kind weiß, dass es Eltern und allen, die die Werte. Ein Kind zum anderen Elternteil weiß, Dass die Eltern Werte. Was ich versuche zu erreichen ist, dass alle Aufnahmen erstellt werden, die Teil eines Projekts sind. Und jetzt, ich bin die Schaffung Shot() Instanzen von innen-Projekt() der Klasse, indem die Instanzen, um eine Liste der Aufnahmen, die dann gepflegt im Projekt () - Instanz.

d.h.

class myParent( object ):
    def __init__( self ):
        self.parent_id = ''
        self.children = []

    def createChild( self, name ):
        self.children.append( myChild( name ) )

    def getChildren( self ):
        return self.children

    def setParentId( self, id ):
        self.parentId = id

class myChild( myParent ):
    def __init__( self, id ):
        super(myChild, self).__init__()
        self.id = id

    def getParentId( self ):
        return self.parent_id

p = myParent()
p.setParentId( 'parent01' )
p.createChild( 'child01' )
print p.getChildren()[0].getParentId()

Kann ich sehen, dass die mis-Schritte in der Logik hier, aber keine wirkliche Möglichkeit um ihn herum..
Scheint, wie jedes Kind, ist immer eine neue Instanz des parent-dieser Weg, wo parent_id ist immer eine leere Zeichenfolge.

  • Sie benötigen zum Aufruf des superclass-Konstruktors.
Schreibe einen Kommentar