当前位置: 首页 > 面试题库 >

哪些特殊方法绕过了__getattribute__?

缪修德
2023-03-14
问题内容

除了出于正确性的考虑绕过任何实例属性之外,隐式特殊方法查找通常还绕过该__getattribute__()方法,甚至对象的元类。

这些文档中提到了__hash____repr__和等特殊方法,__len__根据经验,我也知道它也__iter__适用于Python
2.7。

引用相关问题的答案:

“魔术__methods__()被特殊对待:它们在类型数据结构中内部分配给“插槽”,以加快查找速度,并且仅在这些插槽中查找。”


问题答案:

你可以找到python3在应答文件的object.__getattribute__,其中规定:

无条件调用以实现类实例的属性访问。如果该类也定义__getattr__(),则不会调用后者,除非__getattribute__()显式调用它或引发AttributeError。此方法应返回(计算出的)属性值或引发AttributeError异常。为了避免此方法的无限递归,其实现应始终调用具有相同名称的基类方法以访问其所需的任何属性,例如object。__getattribute__(self, name)

注意

当通过语言语法或内置函数隐式调用的结果查找特殊方法时,仍然可以绕过该方法。请参阅特殊方法查找。

同时此页解释了这个“机器”是如何工作的。从根本上讲__getattribute__,只有当您使用.(点)运算符(以及hasattrZagorulkin指出)访问属性时,才会调用该方法。

请注意,该页面未指定隐式查找哪些特殊方法,因此我认为所有这些方法均适用(您可以在此处找到)。



 类似资料:
  • 本文向大家介绍构造方法有哪些特性?相关面试题,主要包含被问及构造方法有哪些特性?时的应答技巧和注意事项,需要的朋友参考一下 名字与类名相同。 没有返回值,但不能用void声明构造函数。 生成类的对象时自动执行,无需调用。

  • 本文向大家介绍CSS content属性特殊字符有哪些?相关面试题,主要包含被问及CSS content属性特殊字符有哪些?时的应答技巧和注意事项,需要的朋友参考一下 参考文章 来自CSDN

  • 本文向大家介绍防止过拟合有哪些方法相关面试题,主要包含被问及防止过拟合有哪些方法时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1)Dropout ;2)加L1/L2正则化;3)BatchNormalization ;4)网络bagging

  • " My specialty is being right when other people are wrong. " — George Bernard Shaw 深入 在本书其它几处,我们已经见识过一些特殊方法——即在使用某些语法时 Python 所调用的“神奇”方法。使用特殊方法,类用起来如同序列、字典、函数、迭代器,或甚至像个数字!本附录为我们已经见过特殊方法提供了参考,并对一些更加深奥的

  • 本文向大家介绍解决过拟和的方法有哪些?相关面试题,主要包含被问及解决过拟和的方法有哪些?时的应答技巧和注意事项,需要的朋友参考一下 数据增强 正则化、dropout、bn 早停止 降维

  • 问题内容: 可在类中使用的特殊双下划线/底线方法的完整列表在哪里?(例如,,,,) 问题答案: 请查看Python语言参考中的特殊方法名称部分。