类或实例的`__dict__`包含什么属性,什么不包含?

时间:2017-09-06 01:36:04

标签: python python-3.x

对于类的属性:

  • 类或实例的属性__dict__不包含__base____name__。 一个类的__dict__包含哪些属性,哪些不包含?
  • 如何获取课程的所有属性?

对于实例的属性:

  • 实例的属性__dict__不包含__class__。 实例__dict__包含哪些属性,哪些属性不包含?
  • 如何获取实例的所有属性?

感谢。

2 个答案:

答案 0 :(得分:0)

__dict__排除:

  • 在类型(或mro中的任何类型)上定义的任何属性(或描述符)。
  • 声明为在C。
  • 中实现的类型的一部分的任何属性
  • __slots__
  • 中声明的所有属性

列出所有属性的最佳效果是dir,但通常不可靠。

答案 1 :(得分:-2)

dict 很有意思。您需要了解的是Python如何查找属性,方法等。像 name 一样存储在dir(实例)中,这不是标准 getattr 的一部分你的班。只有明确定义的属性和方法是A. dict 的一部分,其他东西是复杂查找系统的一部分,其余的是查看类,子类等,直到你得到'对象'。