J'utilise python mais je ne connais pas bien la classe, donc je vais donner un tutoriel

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.

Pour le moment, la fonction "def"

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)

Pensez à la classe avec la structure la plus simple

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.

Réécrire la variable de l'objet appelé box1

box1.num1=10
box1.num1
10

constructeur

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.

Lorsqu'il n'y a pas d'argument mais que vous souhaitez effectuer un processus fixe

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

Méthodes pour modifier des objets dans une classe

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

Je ne veux pas que tu changes tes manières

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

Renforce le sentiment que je ne veux pas que tu changes un peu plus

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.

Si vous voulez vraiment le toucher, mettez "_class name" entre

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.

Je ne suis pas sûr de l'espace de nom

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é.

c'est tout

Référence: documentation python 9. Classes

Recommended Posts

J'utilise python mais je ne connais pas bien la classe, donc je vais donner un tutoriel
J'ai essayé de gratter YouTube, mais je peux utiliser l'API, alors ne le faites pas.
Je ne connais pas l'arbre de dichotomie équilibrée Python3, mais j'aurais aimé avoir un ensemble trié.
python Je ne sais pas comment obtenir le nom de l'imprimante que j'utilise habituellement.
Je ne sais pas ce qu'est HEIC. Mais pour le moment, utilisons le PNG!
Comment utiliser la méthode __call__ dans la classe Python
Je ne savais pas comment utiliser l'instruction [python] for
J'ai créé une fonction pour découper l'image de python openCV, alors veuillez l'utiliser.
J'avais du mal à faire mes devoirs, j'ai donc utilisé Python pour la comptabilité de gestion.
Je ne connais pas l'erreur de valeur
Je veux le faire avec Python lambda Django, mais je vais m'arrêter
Je ne connaissais pas les bases de Python
Je voulais utiliser le module de recherche d'Ansible2, mais cela a pris du temps, alors prenez note
Je n'ai pas pu importer le module python avec VSCODE, mais je pouvais le faire sur jupyterlab, j'ai donc recherché la cause (2)
[Python, Scala] Faites un tutoriel pour Apache Spark
J'ai écrit une classe en Python3 et Java
Python: préparez un sérialiseur pour l'instance de classe:
[Python] Je vais télécharger FTP sur le serveur FTP.
J'ai fait un peu de recherche sur la classe
Le concept de référence en Python s'est effondré un instant, j'ai donc expérimenté un peu.
Ne prenez pas une instance d'une classe d'exception Python directement comme argument de la classe d'exception!
Je n'ai pas pu importer le module python avec VSCODE, mais sur juoyterlab, j'ai pu trouver la cause.
Implémentation python de la classe de régression linéaire bayésienne
Je voulais utiliser la bibliothèque Python de MATLAB
Commençons Python à partir d'Excel. Je n'utilise pas VBA.
Un mémo que j'ai touché au magasin de données avec python
J'ai créé une bibliothèque python qui fait rouler le rang
Je veux utiliser le jeu de données R avec python
Combien connaissez-vous les bases de Python?
Tutoriel "Cython" pour rendre Python explosif: Passez un objet de classe C ++ à un objet de classe côté Python. Partie ①
J'ai créé une classe pour obtenir le résultat de l'analyse par MeCab dans ndarray avec python
(Note) Je vais faire un tutoriel Django. Même si je suis le site, cela ne fonctionne pas.
Je ne tweet pas, mais je souhaite utiliser tweepy: affichez simplement les résultats de la recherche sur la console
J'étais en charge de la maintenance du script Fabric, mais je ne sais pas.> <À ceux qui