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.
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)
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.
box1.num1=10
box1.num1
10
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.
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
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
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
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.
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.
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.
Referenz: Python-Dokumentation 9. Klassen
Recommended Posts