attributs de cl...LOGIN

attributs de classe

1. Définir les attributs directement dans la classe

Définir les attributs de la classe Bien sûr, le moyen le plus simple et le plus direct est de les définir dans la classe, par exemple :

class UserInfo(object):
    name='两点水'

2.

d'où le nom. , qui consiste à définir les propriétés lors de la construction de l'objet.

class UserInfo(object):
    def __init__(self,name):
        self.name=name

3. Contrôle d'accès aux attributs

En Java, il existe des propriétés publiques (publiques) et privées (privées), qui peuvent contrôler l'accès aux propriétés. Alors, existe-t-il un contrôle d'accès aux attributs en Python ?

Généralement, nous utiliserons __private_attrs commençant par deux traits de soulignement pour déclarer que l'attribut est privé et ne peut pas être utilisé ou directement accessible en dehors de la classe. Lors de l'utilisation de self.__private_attrs dans une méthode à l'intérieur d'une classe.

Pourquoi ne peut-on parler que de situations générales ? Car en fait, Python ne fournit pas de fonctions telles que les attributs privés. Cependant, le contrôle d'accès aux attributs par Python dépend de la connaissance du programmeur. Pourquoi tu dis ça ? Jetez un œil à l'exemple ci-dessous :

2b7f8cc7d68ea31db222e5ad19ad696.png

Regardez attentivement l'image, pourquoi dites-vous que le double soulignement n'est pas un véritable attribut privé ? Jetons un coup d'œil à l'exemple suivant et utilisons l'exemple suivant pour vérifier :

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class UserInfo(object):
    def __init__(self, name, age, account):
        self.name = name
        self._age = age
        self.__account = account
    def get_account(self):
        return self.__account
if __name__ == '__main__':
    userInfo = UserInfo('两点水', 23, 347073565);
    # 打印所有属性
    print(dir(userInfo))
    # 打印构造函数中的属性
    print(userInfo.__dict__)
    print(userInfo.get_account())
    # 用于验证双下划线是否是真正的私有属性
    print(userInfo._UserInfo__account)

Le résultat de sortie est le suivant :

c8042ea045950ea6cab0606f2de1873.png

section suivante
chapitredidacticiel