之间有什么区别(如果有的话)
model.__dict__['title_en']
和
model.__getattribute__('title_en')
什么是最佳做法?
答案 0 :(得分:5)
答案 1 :(得分:5)
正如其他人所说,getattr内置是获取属性的正确方法(通常你不直接访问Python特殊方法:你通过内置函数和运算符访问它们!)。
getattr
比对象__dict__
中的查找做得更多:它支持属性和其他描述符,从类继承的属性及其基础(如方法),可动态的属性通过__getattr__
方法生成(在对象的类中,或者,再次,它的一个基础)。就像直接访问model.title_en
一样,当您在编写代码时知道名称时(在这种情况下,您当然不会使用getattr
;-)。这使得到目前为止是访问仅动态“学习”其名称的属性的首选方式!
答案 2 :(得分:1)
第一个不起作用,因为__dict__
应该是字典,而不是函数。正确的方法是getattr(model, 'title_en')
。