Heim  >  Artikel  >  Backend-Entwicklung  >  Objektorientierte Vertiefung

Objektorientierte Vertiefung

高洛峰
高洛峰Original
2016-10-19 11:14:421152Durchsuche

Wir sind mit den Grundkonzepten von Objekten und Klassen vertraut. Wir werden weiter expandieren, damit wir tatsächlich Objekte und Klassen verwenden können.

Weitere Informationen zur aufrufenden Klasse

Wie in der vorherigen Vorlesung erwähnt, muss bei der Definition einer Methode der Parameter self enthalten sein. Dieser Parameter stellt ein Objekt dar. Das Objekt verfügt über alle Eigenschaften der Klasse, sodass wir die Klassenattribute über self aufrufen können.

class Human(object):
    laugh = 'hahahaha'
    def show_laugh(self):
        print self.laugh
    def laugh_100th(self):
        for i in range(100):
            self.show_laugh()
li_lei = Human()          
li_lei.laugh_100th()

Hier gibt es ein Klassenattribut „Lachen“. In der Methode show_laugh() wird der Wert dieses Attributs über self.laugh aufgerufen.

Auf die gleiche Weise können Sie auch andere Methoden aufrufen. Die Methode show_laugh(), () wird in der Methode lol_100th aufgerufen.

Klassenattributwerte können durch Objekte geändert werden. Aber das ist gefährlich. Klassenattribute werden von allen Objekten derselben Klasse und ihren Unterklassen gemeinsam genutzt. Änderungen an Klassenattributwerten wirken sich auf alle Objekte aus.

__init__()-Methode

__init__() ist eine spezielle Methode. Python verfügt über einige spezielle Methoden. Python behandelt sie besonders. Spezielle Methoden werden durch zwei Unterstriche vor und nach dem Namen gekennzeichnet.

Wenn Sie die Methode __init__() in Ihrer Klasse definieren, ruft Python diese Methode beim Erstellen eines Objekts automatisch auf. Dieser Vorgang wird auch Initialisierung genannt.

class happyBird(Bird):
    def __init__(self,more_words):
        print 'We are happy birds.',more_words
summer = happyBird('Happy,Happy!')

Die Bird-Klasse wird hier vererbt, ihre Definition wird in der vorherigen Vorlesung gezeigt.

Drucken Sie auf dem Bildschirm:

Wir sind glückliche Vögel. Glücklich, glücklich!

Wir sehen, dass die Methode __init__() automatisch ausgeführt wird, obwohl wir gerade das Sommerobjekt erstellt haben angerufen. Die letzte Anweisungszeile (summer = happyBird...) erstellt zunächst das Objekt und führt dann Folgendes aus:

summer.__init__(more_words)

'Happy,Happy!' wird an __init__ übergeben Parameter von () more_words

Eigenschaften des Objekts

Wir haben über viele Attribute gesprochen, aber diese Attribute sind Attribute der Klasse. Alle zu dieser Klasse gehörenden Objekte haben diese Eigenschaften gemeinsam. Beispielsweise haben alle Vögel Federn und Hühner können nicht fliegen.

In manchen Fällen definieren wir die Eigenschaften eines Objekts, um spezielle Informationen über das Objekt aufzuzeichnen. Zum Beispiel die Kategorie Mensch. Geschlecht ist eine Eigenschaft einer Person; nicht alle Menschen sind männlich oder weiblich. Der Wert dieser Eigenschaft variiert von Objekt zu Objekt. Li Lei ist ein menschliches Objekt mit männlichem Geschlecht; Han Meimei ist auch ein menschliches Objekt mit weiblichem Geschlecht.

Beim Definieren einer Klassenmethode muss ein self-Parameter übergeben werden. Dieser Parameter bezieht sich auf ein Objekt der Klasse. Wir können die Eigenschaften eines Objekts ändern, indem wir uns selbst manipulieren. Wenn Sie beispielsweise eine Klasse verwenden, um ein neues Objekt zu erstellen, im folgenden Beispiel li_lei, wird li_lei durch self dargestellt. Indem wir self.attribute einen Wert zuweisen, fügen wir dem Objekt li_lei einige Eigenschaften hinzu, wie zum Beispiel das männliche und weibliche Geschlecht. self wird an jede Methode übergeben. Innerhalb der Methode können Sie die Eigenschaften des Objekts abfragen oder ändern, indem Sie auf self.attribute verweisen.

Auf diese Weise erhält jedes Objekt zusätzlich zu den Klassenattributen seine eigenen einzigartigen Eigenschaften, sodass es verschiedene Welten beschreiben kann.

class Human(object):
    def __init__(self, input_gender):
        self.gender = input_gender
    def printGender(self):
        print self.gender
li_lei = Human('male') # 这里,'male'作为参数传递给__init__()方法的input_gender变量。
print li_lei.gender
li_lei.printGender()

Weisen Sie bei der Initialisierung den Parameter input_gender der Eigenschaft des Objekts zu, also self.gender.

li_lei hat die Objekteigenschaft Geschlecht. Geschlecht ist kein Klassenattribut. Nachdem Python das Objekt li_lei erstellt hat, verwendet es die Objekteigenschaft li_lei.gender, um speziell die eindeutigen Informationen zu speichern, die zum Objekt li_lei gehören.

Objekteigenschaften können auch von anderen Methoden aufgerufen werden. Die aufrufende Methode ähnelt dem Aufruf des Klassenattributs, genau wie der Aufruf in der printGender()-Methode.

Zusammenfassung

Aufruf von Klassenattributen über sich selbst

__init__(): wird beim Erstellen eines Objekts automatisch ausgeführt

Der Unterschied zwischen Klassenattributen und der Natur von Objekten


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn