Python动态字段查找之间的区别

phi*_*o20 1 python

两者之间有什么区别(如果有的话)

model.__dict__['title_en']
Run Code Online (Sandbox Code Playgroud)

model.__getattribute__('title_en')
Run Code Online (Sandbox Code Playgroud)

什么是最佳实践?

Chr*_*heD 5

最佳实践?使用getattr.

getattr(model, 'title_en')
Run Code Online (Sandbox Code Playgroud)

您只想要__getattr____getattribute__当您想要覆盖默认属性提取机制时.


Ale*_*lli 5

正如其他人所说,getattr内置是获取属性的正确方法(通常你不直接访问Python特殊方法:你通过内置函数和运算符访问它们!).

getattr除了在对象中查找之外,__dict__它还做了很多:它支持属性和其他描述符,从类继承的属性及其基础(例如方法),可以通过__getattr__方法动态生成的属性(在对象的类中,或者, ,它的一个基地).就像直接访问model.title_en一样,当您在编写代码时知道名称(在这种情况下,您当然不会使用getattr;-).这使得迄今为止访问其名称"学习"只动态属性的首选方式!