Heim  >  Artikel  >  Backend-Entwicklung  >  Was kann __slots__ in Python tun? (Beispielanalyse)

Was kann __slots__ in Python tun? (Beispielanalyse)

乌拉乌拉~
乌拉乌拉~Original
2018-08-22 17:06:531253Durchsuche

In diesem Artikel lernen wir das relevante Wissen über Python__slots__ kennen. Einige Freunde sind möglicherweise gerade mit der Programmiersprache Python in Kontakt gekommen und haben kein besonderes Verständnis für diesen Aspekt Sie zum relevanten Wissen über Python__slots__.

Was ist, wenn wir die Eigenschaften einer Instanz einschränken möchten? Beispielsweise dürfen zu Student-Instanzen nur Namens- und Altersattribute hinzugefügt werden.

Um den Zweck der Einschränkung zu erreichen, können Sie in Python beim Definieren einer Klasse eine spezielle __slots__-Variable definieren, um die Attribute zu begrenzen, die der Klasseninstanz hinzugefügt werden können:

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

Dann Wir versuchen Folgendes:

>>> 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;

Da „score“ nicht in __slots__ platziert ist, kann das Score-Attribut nicht gebunden werden. Wenn Sie versuchen, den Score zu binden, erhalten Sie einen AttributeError.

Bei der Verwendung von __slots__ beachten Sie bitte, dass die durch __slots__ definierten Attribute nur die aktuelle Klasseninstanz beeinflussen und keine Auswirkungen auf geerbte Unterklassen haben:

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

Es sei denn, es wird auch in der Unterklasse verwendet. Definieren Sie __slots__, sodass die Attribute, die Unterklasseninstanzen definieren dürfen, ihre eigenen __slots__ plus die __slots__ der übergeordneten Klasse sind.

Das Obige ist der gesamte Inhalt dieses Artikels. Dieser Artikel stellt hauptsächlich das relevante Wissen über Python__Slots__ vor. Ich hoffe, dass das, was ich in diesem Artikel beschrieben habe, für Sie hilfreich ist und Ihnen das Erlernen von Python erleichtert.

Weitere Informationen zu diesem Thema finden Sie in der Spalte Python-Tutorial auf der chinesischen PHP-Website.

Das obige ist der detaillierte Inhalt vonWas kann __slots__ in Python tun? (Beispielanalyse). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn