【发布时间】:2017-09-06 01:36:03
【问题描述】:
对于一个类的属性:
- 类或实例的属性
__dict__不包括__base__、__name__。 类的__dict__包含哪些属性,哪些不包含? - 如何获取一个类的所有属性?
对于实例的属性:
- 实例的属性
__dict__不包括__class__。 实例的__dict__包含哪些属性,哪些不包含? - 如何获取实例的所有属性?
谢谢。
【问题讨论】:
-
它不包括大多数魔术方法,在
__slots__中定义的任何东西等等。 -
@MadPhysicist 谢谢。 “魔术方法”是什么意思?
-
@Ben。任何以双下划线开头和结尾的东西:
__init__、__new__、__eq__等。这些方法在 Python 中有特殊用途,你不应该编造新的,而且大部分都没有在__dict__中设置据我所知。 -
此外,您可以通过
__getattr__和__getattribute__拥有无限数量的可访问属性,主要是后者。
标签: python python-3.x