Python Basic Memorandum Teil 3 - Informationen zur Objektorientierung

Artikelübersicht

Es ist ein Memorandum, das ich gemäß Referenzen gelernt habe, um Python so gut wie möglich lesen zu können. Ich habe die Punkte zusammengefasst, an denen ich interessiert war, und die Punkte, die ich im Vergleich zu Java nützlich fand. Teil 1 ist hier Teil 2 ist hier * Dies ist ein ziemlich grundlegender Inhalt. </ strong>

Klasse

Das Konzept der Klasse selbst ist nicht so unterschiedlich. Ein Beispiel zum Definieren einer Klasse finden Sie unten.

Beispiel

java


class SampleClass {
    //Klassenverarbeitung
}

python


class SampleClass:
    #Klassenverarbeitung

Instanziierung

Instanziieren Sie eine Klasse. Die Handhabung ist fast die gleiche wie bei Java. ~~ Sollte ~~

java


SampleClass sClass = new SampleClass();

python


sClass = SampleClass()

Attribut

Es ist wie eine Instanzvariable in Java (?). Sie können der Instanz Attribute hinzufügen.

python


sClass.attr = "Atori Byuto"
print(sClass.attr)
>>Atori Byuto

Definition der Klassenmethode

Wenn Sie einer Klassenmethode ein Argument hinzufügen, fügen Sie dem ersten Argument self hinzu.

Self kann verwendet werden, um die Instanz selbst zu manipulieren

Beispiel

java


class SampleClass {
    int counter = 0;
    
    int count(int a) {
        counter += a;
    }
}

python


class SampleClass:
    counter = 0;

    def count(self, a):
        self.counter += a

Initialisierungsmethode

Die Initialisierungsmethode verwendet __init__ (spezielle Methode).

Beispiel

java


publiv class Human {
    String name;
    String birthday;

    public Human(String name, String birthday) {
        this.name = name;
        this.birthday = birthday;
    }
}

python


class Human:    
    def __init__(self, name = None, birthday = None):
        self.__name = name
        self.__birthday = birthday

Verkapselung

Präfixmethoden und Attribute mit __ (zwei Unterstriche) zur Kapselung. Der Zugriff von außen kann durch Hinzufügen von "__" verhindert werden. Wenn Sie einer Methode oder einem Attribut "_" voranstellen (ein Unterstrich) Es hat die Bedeutung von "Nicht von außen zugreifen, da es nur innerhalb der Klasse verwendet wird" (es scheint).

  • Es scheint, dass der Unterstrich verschiedene Bedeutungen hat, wenn ich ihn nachschlage. Links wie Artikel bei der Suche in den Referenzen werden gepostet.

Addition </ strong> ~~ Es scheint, dass Getter und Setter in Python nicht definiert sind. ~~ Es wird anscheinend nicht empfohlen, Methoden wie get〇〇 und set〇〇 in Python zu definieren. (Der Zugriff auf die Attribute kann separat zusammengefasst werden.) In diesem Artikel werden Getter und Setter wie oben definiert definiert, um Ihnen das Verständnis im Vergleich zu Java zu erleichtern. Bitte beachten Sie. Wenn Sie keine Unterstriche, Getter und Setter definieren, denke ich daran, separat zu lernen und sie zusammenzufassen.

Beispiel

java


publiv class Human {
    private String name;
    private String birthday;

    public Human(String name, String birthday) {
        this.name = name;
        this.birthday = birthday;
    }

    public getName() {
        return this.name;
    }

    public getBirthday() {
        return this.birthday;
    }

    public setName(String name) {
        this.name = name;
    }

    public setBirthday(String birthday) {
        this.birthday = birthday;
    }
}

python


class Human:
    def __init__(self, name = None, birthday = None):
        self.__name = name
        self.__birthday = birthday
    
    def getName(self):
        return self.__name

    def getBirthday(self):
        return self.__birthday

    def setName(self, name):
        self.__name = name

    def setBirthday(self, birthday):
        self.__birthday = birthday    

Erbe

Python ist mehrfach vererbbar </ strong>. Geben Sie bei Mehrfachvererbung die Klassennamen an, die durch , getrennt sind.

Beispiel

java


public class SuperMan extends Human {
    private String ability;

    public getAbility() {
        return this.age;
    }

    public setAbility(String ability) {
        this.ability = ability;
    }

python


class SuperMan(Human): #Für Mehrfachvererbung SuperMan(Human, Man)Definieren Sie wie
    def getAbility(self):
        return self.__ability

    def setAbility(self, ability = None):
        self.__ability = ability

Slot

Spezielle Methoden, die das Hinzufügen von Attributen einschränken können __slots__ = [Attributname 1, Attributname 2, ...]

Verbessern Sie die Effizienz der Speichernutzung

python


class Profile:
    __slots__ = ['height', 'weight', 'bloodType']

    def __init__(self, bloodType = None):
        self.bloodType = bloodType

a = Profile('A')
print(a.bloodType)
>>A

#In Slots definierte Attribute
a.height = 170
a.weight = 60

a.constellation = 'Aries'
>>Ein Fehler tritt auf

Eigentum

Eingebaute Funktion zur einfachen Definition von Getter und Setter. Kontrollieren Sie einfach den Zugriff auf private Attribute. Eigenschaft (Name der Getter-Methode, [Name der Setter-Methode])

python


class Human:
    def __init__(self, name = None):
        self.__name = name
    
    def getName(self):
        return self.__name

    def setName(self, name):
        self.__name = name

    propName = property(getName, setName)

#Wenn eine Ersetzung durchgeführt wird, funktioniert der in der Eigenschaft festgelegte Setter.
propName = 'takeshi'
#Beim Abrufen funktioniert der in der Eigenschaft festgelegte Setter
print(propName)
>>takeshi

Nachwort

Als ich mich mit den Nachteilen von Python befasste, stellte ich fest, dass die Ausführung langsam war. Ich war der Meinung, dass die diesmal zusammengefassten "slots" notwendig sind, um die Nachteile zu verbessern. Ich möchte mein Verständnis erweitern, damit ich Python-ähnliche Funktionen richtig verwenden kann.

Verweise

Referenz </ strong> Atsushi Shibata (2016) "Minna no Python 4. Auflage" SB Creative Co., Ltd.

Offizielle Referenz </ strong> Offizielle Python-Referenz

Informationen zu Datentypen </ strong> Klassifizierungstabelle der integrierten Datentypen von Python (veränderbar usw.)

Über Unterstrich </ strong> Python-Kurs für Anfänger, objektorientierte Version 7 gekapselt Lektion 12 Klassendefinition - Einführung in die Python-Grundgrammatik Python Underbar, das ist es nicht

Recommended Posts