Maison >développement back-end >Tutoriel Python >Que peut faire __slots__ en python ? (Exemple d'analyse)

Que peut faire __slots__ en python ? (Exemple d'analyse)

乌拉乌拉~
乌拉乌拉~original
2018-08-22 17:06:531329parcourir

Dans cet article, découvrons les connaissances pertinentes sur python__slots__. Certains amis viennent peut-être d'entrer en contact avec le langage de programmation python et n'ont pas une compréhension particulière de cet aspect. Dans le prochain article, laissez-moi vous présenter. vous aux connaissances pertinentes sur python__slots__.

Et si on veut limiter les propriétés d'une instance ? Par exemple, seuls les attributs de nom et d'âge peuvent être ajoutés aux instances Student.

Afin d'atteindre l'objectif de restriction, Python vous permet de définir une variable __slots__ spéciale lors de la définition d'une classe pour limiter les attributs qui peuvent être ajoutés à l'instance de classe :

class Student(object):
    __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称

Ensuite, essayons :

>>> s = Student() # 创建新的实例
>>> s.name = 'Michael' # 绑定属性'name'
>>> s.age = 25 # 绑定属性'age'
>>> s.score = 99 # 绑定属性'score'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: &#39;Student&#39; object has no attribute &#39;score&#39;

Puisque 'score' n'est pas placé dans __slots__, l'attribut score ne peut pas être lié. Si vous essayez de lier le score, vous obtiendrez une AttributeError.

Lors de l'utilisation de __slots__, veuillez noter que les attributs définis par __slots__ n'affectent que l'instance de classe actuelle et n'ont aucun effet sur les sous-classes héritées :

>>> class GraduateStudent(Student):
...     pass
...
>>> g = GraduateStudent()
>>> g.score = 9999

Sauf dans la sous-classe __slots__ est également défini dans , de sorte que les attributs que les instances de sous-classe sont autorisées à définir sont leurs propres __slots__ plus les __slots__ de la classe parent.

Ce qui précède est tout le contenu de cet article. Cet article présente principalement les connaissances pertinentes de python__slots__. J'espère que vous pourrez utiliser les informations pour comprendre le contenu ci-dessus. J'espère que ce que j'ai décrit dans cet article vous sera utile et vous facilitera l'apprentissage de Python.

Pour plus de connaissances connexes, veuillez visiter la colonne Tutoriel Python du site Web php chinois.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn