J'utilise python, mais je ne comprends pas vraiment la classe. Mais j'ai besoin d'étudier car les cours apparaissent fréquemment dans Pytorch.
J'espère que des personnes occupant des positions similaires pourront l'utiliser pour abaisser les barrières psychologiques.
Veuillez vous référer au Document officiel 9: class pour une compréhension correcte.
Vous pouvez spécifier un nom et des arguments pour l'opération que vous souhaitez traiter.
def kakezan(a, b):
return a*b
kakezan(9, 9)
81
Le résultat de l'exécution peut être enregistré dans la variable comme suit.
times99 = kakezan(9, 9)
Considérez-le comme une simple boîte avec des valeurs informationnelles
class keisan:
num1=1
num2=2
Les informations de la classe peuvent être récupérées à l'aide de symboles de points.
keisan.num1
Si vous le connectez avec un argument et que vous l'égalez, vous pouvez le gérer comme si vous transfériez une boîte contenant des informations.
box1 = keisan()
box1
<__main__.keisan at 0x7f5e03896b38>
Le nom de la classe est affiché
box1.num1
Le contenu peut être retiré avec des points.
box1.num1=10
box1.num1
10
Une méthode (fonction dans la classe) qui est toujours exécutée lors de la création d'un objet
class keisan:
num1=1
num2=2
def __init__(self):
print('Toujours affiché')
box3 = keisan()
Si vous mettez une classe dans une variable, la partie constructeur sera exécutée
Toujours affiché
Le moi ci-dessus est une magie à écrire Si la cible pointée par soi-même est la suivante, case 3 Il n'y a rien à faire pour le moment, mais assurez-vous de saisir quelques arguments. Peut également être utilisé pour les instructions
class keisan:
num1=1
num2=2
def __init__(self,name1,age1):
print('Le prénom est' + name1 +
'Et l'âge est' + str(age1) + 'est. Cela sera affiché à chaque fois.')
box4 = keisan()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-7-df434c06b06e> in <module>()
7 'Et l'âge est' + str(age1) + 'est. Cela sera affiché à chaque fois.')
8
----> 9 box4 = keisan()
TypeError: __init__() missing 2 required positional arguments: 'name1' and 'age1'
Si vous n'entrez rien, l'impression ne peut pas être exécutée et une erreur se produit.
box4 = keisan(name1='Mike',age1=19)
Le prénom est Mike et il a 19 ans. Cela sera affiché à chaque fois.
Le traitement de l'affichage est terminé.
L'entrée ne peut pas être récupérée telle quelle.
box4.name1
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-9-53236fb457a0> in <module>()
----> 1 box4.name1
AttributeError: 'keisan' object has no attribute 'name1'
Obtenez une erreur Créez un argument si vous souhaitez enregistrer
class keisan:
num1=1
num2=2
def __init__(self,name1,age1):
self.name1=name1
self.age1=age1
print('Le prénom est'+name1+'Et l'âge est'+str(age1)+'est. Cela sera affiché à chaque fois.')
box5 = keisan('Rachel',22)
box5.name1
Rachel
J'ai pu le retirer.
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
Utilisez la méthode plus10 dans la classe
box6.plus10()
box6.val1
25
L'argument doit être cls au lieu de self
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
Exécuter plus5 de la méthode qui change num2 de classe
box7.plus5()
box7.num2
7
J'ai pu changer num2 dans la classe
Lors de la conception d'une classe et de l'exposition du code à d'autres personnes, ajoutez un symbole «_» aux parties que vous ne souhaitez pas modifier dans la conception.
class keisan:
def __init__(self,val1,val2):
self._val1=val1 #Je ne veux pas que tu changes
self.val2=val2 #Vous pouvez changer
box9 = keisan(10,20)
print(box9._val1)
print(box9.val2)
10
20
box9._val1 = 30
box9._val1
30
Je peux le changer
class keisan:
def __init__(self,val1,val2):
self.__val1=val1 #Des sentiments forts que je ne veux pas que vous changiez
self.val2=val2 #Vous pouvez changer
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'
Obtenez une erreur Je ne peux plus confirmer.
Confirmation du nom de la classe
print(type(box10))
<class '__main__.keisan'>
Le nom de la classe peut être confirmé comme keisan
box10._keisan__val1
10
Cela pourrait être confirmé. _ Caché plus d'un.
Un espace de noms est un concept lié au mappage des noms aux objets. Il y a la fonction 1 dans le module 1 (un groupe de fonctions. Image d'un groupe de fonctions). Les fonctions avec le même nom peuvent être traitées comme des choses différentes avec le même nom à moins qu'elles ne soient définies dans un autre module. Ces fonctions sont les noms de fonctions dans différents espaces de noms et n'ont aucune relation.
Ça semble être tellement chèque
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
Même si le nom de la même fonction est différent, s'il s'agit d'une méthode d'une autre classe, un autre processus est effectué.