Python背后的方法

_ __getattr _ __

object. __getattr__(self, name)是一个对象方法,如果找不到对象的属性时会调用这个方法。

这个方法应该返回属性值或者抛出AttributeError异常。

注意,如果通过正常机制能找到对象属性的话,不会调用__getattr__方法。

示例

1
2
3
4
5
6
7
8
9
10
11
>>> class Frob:
... def __init__(self, bamf):
... self.bamf = bamf
... def __getattr__(self, name):
... return 'Frob does not have `{}` attribute.'.format(str(name))
...
>>> f = Frob("bamf")
>>> f.bar
'Frob does not have `bar` attribute.'
>>> f.bamf
'bamf'

这个方法可以实现用属性(键)的方式访问字典值。mmcv中Config类即是这种用法的典范。

getattr

getattr (object, name[, default])是Python的内置函数之一,它的作用是获取对象的属性。

  • object 对象
  • name 属性名
  • default 当属性不存在时,返回的默认值

示例

1
2
3
4
5
6
7
8
9
10
11
>>> class Foo:
... def __init__(self, x):
... self.x = x
...
>>> f = Foo(10)
>>> getattr(f, 'x')
10
>>> f.x
10
>>> getattr(f, 'y', 'bar')
'bar'

__getitem__

[]运算符调用的函数

参看:

https://www.jianshu.com/p/219e962e4f35

------ 本文结束------
赞赏此文?求鼓励,求支持!
  • 本文标题: Python背后的方法
  • 本文作者: Jiang.G.F
  • 创建于: 2019年12月21日 - 22时12分
  • 更新于: 2020年03月03日 - 11时03分
  • 本文链接: https://gfjiangly.github.io/Python/magic_method.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
0%