Verwendung von __slots__ in der Python-Klasse

Da Python eine dynamische Sprache ist, müssen keine Variablen deklariert werden, und Instanzvariablen können dynamisch erstellt werden.

class User:
    pass


user1 = User()
user1.username = 'kaito'

Verwenden Sie \ _ \ _ slots \ _ \ _ </ code>, um die Erstellung von Instanzvariablen ohne Berechtigung einzuschränken.

class User:
    __slots__ = ('username', 'age')

user1 = User()
user1.username = 'kaito'
user1.password = 'aaa'

Sie können den Fehler sehen.

      4 user1 = User()
      5 user1.username = 'kaito'
----> 6 user1.password = 'aaa'

AttributeError: 'User' object has no attribute 'password'

Python speichert auch Instanzvariablen in einem Wörterbuch. Durch die Definition von \ _ \ _ slots \ _ \ _ </ code> werden jedoch Taples anstelle von Wörterbüchern verwendet, wodurch Speicherplatz gespart wird.

Recommended Posts