Документация по каждому указанному вами методу легко достижима из индекса документации .
В любом случае это может быть немного расширенной ссылкой:
__get__
, __set__
и __del__
являются дескрипторами «В двух словах , дескриптор - это способ настройки того, что происходит, когда вы ссылаетесь на атрибут на модели. " [Official doc link]
Они хорошо объясняются вокруг, поэтому здесь есть некоторые ссылки:
__getattr__
, __getattribute__
, __setattr__
, __delattr__
Определены методы, которые могут быть определены для настройки значения доступа к атрибуту (использование, назначение или удаление x.name
) для экземпляров класса. [официальный doc-канал]
Пример 1:
class Foo:
def __init__(self):
self.x = 10
def __getattr__(self, name):
return name
f = Foo()
f.x # -> 10
f.bar # -> 'bar'
Пример 2:
class Foo:
def __init__(self):
self.x = 10
def __getattr__(self,name):
return name
def __getattribute__(self, name):
if name == 'bar':
raise AttributeError
return 'getattribute'
f = Foo()
f.x # -> 'getattribute'
f.baz # -> 'getattribute'
f.bar # -> 'bar'
__getitem__
, __setitem__
, __delitem__
Способы, которые можно определить для реализации объектов-контейнеров. [официальный doc-ссылка]
Пример :
class MyColors:
def __init__(self):
self._colors = {'yellow': 1, 'red': 2, 'blue': 3}
def __getitem__(self, name):
return self._colors.get(name, 100)
colors = MyColors()
colors['yellow'] # -> 1
colors['brown'] # -> 100
Надеюсь, этого достаточно, чтобы дать вам общую идею.