您可以从文档索引轻松找到列出的每种方法的文档。
无论如何,这可能是一个扩展的参考:
__get__
,__set__
并且__del__
是描述符
简而言之,描述符是一种自定义当您引用模型上的属性时发生的情况的方法。”
[官方文档链接]
对其进行了很好的解释,因此这里有一些参考:
- Marty Alchin第1部分和第2部分编写的Python描述符
- 所以问题理解__get__和__set__和Python描述符
- 谷歌
__getattr__
,__getattribute__
,__setattr__
,__delattr__
是 可以定义以自定义x.name
类实例的属性访问(使用,分配或删除)的含义的 方法 。
[官方文档链接]
范例1:
class Foo: def __init__(self): self.x = 10 def __getattr__(self, name): return namef = Foo()f.x # -> 10f.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__
是 可以定义以实现容器对象的方法。
[官方文档链接]
例:
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'] # -> 1colors['brown'] # -> 100我希望这足以给您一个总体思路。



