Ich benutze Python, aber ich kenne die Klasse nicht gut, deshalb werde ich ein Tutorial geben

Ich benutze Python, aber ich verstehe die Klasse nicht wirklich. Aber Pytorch hat viele Klassen, also muss ich lernen.

Ich hoffe, dass Menschen in ähnlichen Positionen damit psychologische Barrieren abbauen können.

Informationen zum korrekten Verständnis finden Sie in Offizielles Dokument 9: Klasse.

Die Funktion "def" ist vorerst

Sie können einen Namen und Argumente für die Operation angeben, die Sie verarbeiten möchten.

def kakezan(a, b):
    return a*b

kakezan(9, 9)
81

Das Ausführungsergebnis kann wie folgt in der Variablen gespeichert werden.

times99 = kakezan(9, 9)

Denken Sie an Klasse mit der einfachsten Struktur

Stellen Sie sich das nur als eine Box mit Informationswerten vor

class keisan:
    num1=1
    num2=2

Informationen in der Klasse können mithilfe von Punktsymbolen abgerufen werden.

keisan.num1

Wenn Sie es mit einem Argument verbinden und es gleichsetzen, können Sie damit umgehen, als würden Sie ein Feld mit Informationen übertragen.

box1 = keisan()
box1
<__main__.keisan at 0x7f5e03896b38>

Der Name der Klasse wird ausgegeben

box1.num1

Der Inhalt kann mit Punkten herausgenommen werden.

Schreiben Sie die Variable des Objekts mit dem Namen box1 neu

box1.num1=10
box1.num1
10

Konstrukteur

Eine Methode (Funktion in der Klasse), die immer ausgeführt wird, wenn ein Objekt erstellt wird

class keisan:
    num1=1
    num2=2
    def __init__(self):
        print('Wird immer angezeigt')

box3 = keisan()

Wenn Sie eine Klasse in eine Variable einfügen, wird der Konstruktorteil ausgeführt

Wird immer angezeigt

Das obige Selbst ist eine Magie zu schreiben Wenn das Ziel, auf das selbst gezeigt wird, das oben genannte ist, Feld3 Im Moment gibt es nichts zu tun, aber geben Sie unbedingt einige Argumente ein. Kann auch für Anweisungen verwendet werden

class keisan:
    num1=1
    num2=2
    
    def __init__(self,name1,age1):
        print('Der Vorname ist' + name1 + 
                'Und das Alter ist' + str(age1) + 'ist. Dies wird jedes Mal angezeigt.')

box4 = keisan()
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-7-df434c06b06e> in <module>()
      7                 'Und das Alter ist' + str(age1) + 'ist. Dies wird jedes Mal angezeigt.')
      8 
----> 9 box4 = keisan()

TypeError: __init__() missing 2 required positional arguments: 'name1' and 'age1'

Wenn Sie nichts eingeben, kann der Druckvorgang nicht ausgeführt werden und es tritt ein Fehler auf.

box4 = keisan(name1='Mike',age1=19)
Der Vorname ist Mike und er ist 19 Jahre alt. Dies wird jedes Mal angezeigt.

Die Anzeigeverarbeitung ist abgeschlossen.

Die Eingabe kann nicht wie sie ist abgerufen werden.

box4.name1
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-9-53236fb457a0> in <module>()
----> 1 box4.name1

AttributeError: 'keisan' object has no attribute 'name1'

Erhalten Sie einen Fehler Erstellen Sie ein Argument, wenn Sie speichern möchten

class keisan:
    num1=1
    num2=2
    def __init__(self,name1,age1):
        self.name1=name1
        self.age1=age1
        print('Der Vorname ist'+name1+'Und das Alter ist'+str(age1)+'ist. Dies wird jedes Mal angezeigt.')

box5 = keisan('Rachel',22)
box5.name1
Rachel

Ich konnte es herausnehmen.

Wenn es kein Argument gibt, Sie aber einen festen Prozess ausführen möchten

class keisan:
    num1=1
    num2=2
    def __init__(self,val1):
        self.val1=val1
    def plus10(self):
        self.val1 +=10

box6 = keisan(val1=15)
box6.val1
15

Verwenden Sie die plus10-Methode in der Klasse

box6.plus10()
box6.val1
25

Eine Methode zum Ändern eines Objekts in einer Klasse

Das Argument sollte cls statt self sein

class keisan:
    num2=2
    def __init__(self,val1):
        self.val1=val1
    def plus10(self):
        self.val1 +=10
    def plus5(cls):
        cls.num2 +=5

box7 = keisan(val1=22)
box7.num2
2

Führen Sie plus5 der Methode aus, die num2 der Klasse ändert

box7.plus5()
box7.num2
7

Ich konnte num2 in der Klasse ändern

Ich möchte nicht, dass du deine Manieren änderst

Fügen Sie beim Entwerfen einer Klasse und beim Offenlegen des Codes für andere ein "_" -Symbol zu den Teilen hinzu, die Sie im Entwurf nicht ändern möchten.

class keisan:

    def __init__(self,val1,val2):
        self._val1=val1 #Ich möchte nicht, dass du dich änderst
        self.val2=val2 #Du kannst ändern

box9 = keisan(10,20)
print(box9._val1)
print(box9.val2)
10
20
box9._val1 = 30
box9._val1
30

Ich kann es ändern

Stärken Sie das Gefühl, dass ich nicht möchte, dass Sie sich ein bisschen mehr ändern

class keisan:

    def __init__(self,val1,val2):
        self.__val1=val1 #Starke Gefühle, die ich nicht möchte, dass du dich änderst
        self.val2=val2 #Du kannst ändern

box10 = keisan(10,20)
box10.__val1
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-15-68ebfca72338> in <module>()
      6 
      7 box10 = keisan(10,20)
----> 8 box10.__val1

AttributeError: 'keisan' object has no attribute '__val1'

Erhalten Sie einen Fehler Ich kann nicht mehr bestätigen.

Wenn Sie es wirklich berühren möchten, setzen Sie "_class name" dazwischen

Bestätigung des Klassennamens

print(type(box10))
<class '__main__.keisan'>

Der Klassenname kann als Keisan bestätigt werden

box10._keisan__val1
10

Es konnte bestätigt werden. _ Mehr als eins versteckt.

Ich bin mir nicht sicher über den Namensraum

Ein Namespace ist ein Konzept, das sich auf die Zuordnung von Namen zu Objekten bezieht. In Modul 1 gibt es Funktion 1 (eine Gruppe von Funktionen. Bild einer Gruppe von Funktionen). Funktionen mit demselben Namen können als unterschiedliche Dinge mit demselben Namen behandelt werden, sofern sie nicht in einem anderen Modul definiert sind. Solche Funktionen sind die Namen von Funktionen in verschiedenen Namespaces und haben keine Beziehung.

Es scheint so zu überprüfen

class cs1:
    def __init__(self,val1):
        self.val1=val1
    def cal1(self,val2):
        self.kekka = self.val1 * val2

class cs2:
    def __init__(self,val1):
        self.val1=val1
    def cal1(self,val2):
        self.kekka = self.val1 + val2

class1 = cs1(10)
class1.cal1(15)
print(class1.kekka)

class2 = cs2(10)
class2.cal1(15)
print(class2.kekka)
150
25

Selbst wenn der Name derselben Funktion unterschiedlich ist, wird ein anderer Prozess ausgeführt, wenn es sich um eine Methode einer anderen Klasse handelt.

das ist alles

Referenz: Python-Dokumentation 9. Klassen

Recommended Posts

Ich benutze Python, aber ich kenne die Klasse nicht gut, deshalb werde ich ein Tutorial geben
Ich habe versucht, YouTube zu kratzen, aber ich kann die API verwenden, also tu es nicht.
Ich kenne den Python3-Baum mit ausgeglichener Dichotomie nicht, aber ich wünschte, ich hätte einen sortierten Satz.
Python Ich weiß nicht, wie ich den Druckernamen bekomme, den ich normalerweise benutze.
Ich weiß nicht, was HEIC ist. Aber vorerst verwenden wir PNG!
Verwendung der Methode __call__ in der Python-Klasse
Ich wusste nicht, wie ich die [Python] für die Anweisung verwenden sollte
Ich habe eine Funktion zum Trimmen des Bildes von Python openCV erstellt. Verwenden Sie sie daher bitte.
Es fiel mir schwer, meine Hausaufgaben zu machen, deshalb verwendete ich Python für das Management Accounting.
Ich kenne den Wertfehler nicht
Ich möchte es mit Python Lambda Django machen, aber ich werde aufhören
Ich kannte die Grundlagen von Python nicht
Ich wollte das Suchmodul von Ansible2 verwenden, aber es hat einige Zeit gedauert, machen Sie sich also eine Notiz
Ich konnte das Python-Modul nicht mit VSCODE importieren, aber ich konnte es auf jupyterlab tun, also suchte ich nach der Ursache (2)
[Python, Scala] Machen Sie ein Tutorial für Apache Spark
Ich habe eine Klasse in Python3 und Java geschrieben
Python: Bereiten Sie einen Serializer für die Klasseninstanz vor:
[Python] Ich werde FTP auf den FTP-Server hochladen.
Ich habe ein wenig über die Klasse recherchiert
Das Konzept der Referenz in Python brach für einen Moment zusammen, also experimentierte ich ein bisschen.
Nehmen Sie eine Instanz einer Python-Ausnahmeklasse nicht direkt als Argument für die Ausnahmeklasse!
Ich konnte das Python-Modul nicht mit VSCODE importieren, aber auf juoyterlab konnte ich die Ursache finden.
Python-Implementierung der Bayes'schen linearen Regressionsklasse
Ich wollte die Python-Bibliothek von MATLAB verwenden
Beginnen wir Python aus Excel. Ich benutze kein VBA.
Ein Memo, dass ich den Datenspeicher mit Python berührt habe
Ich habe eine Python-Bibliothek erstellt, die einen rollierenden Rang hat
Ich möchte R-Datensatz mit Python verwenden
Wie viel kennen Sie die Grundlagen von Python?
"Cython" -Tutorial, um Python explosiv zu machen: Übergeben Sie ein C ++ - Klassenobjekt an ein Klassenobjekt auf der Python-Seite. Teil ①
Ich habe eine Klasse erstellt, um das Analyseergebnis von MeCab in ndarray mit Python zu erhalten
(Hinweis) Ich werde ein Django-Tutorial machen. Selbst wenn ich der Seite folge, funktioniert es nicht.
Ich twittere nicht, aber ich möchte tweepy verwenden: Zeigen Sie einfach die Suchergebnisse auf der Konsole an
Ich war für die Pflege des Fabric-Skripts verantwortlich, weiß es aber nicht.> <Für diejenigen, die