dir()允许您通过定义来自定义对象报告的属性
__dir__()。
在手册中,如果
__dir__()未定义:
如果对象是模块对象,则列表包含模块属性的名称。
如果对象是类型或类对象,则列表包含其属性的名称以及递归其基础属性的名称。
否则,列表将包含对象的属性名称,其类的属性名称以及递归其类的基类的属性。
这也是
inspect.getmembers()返回值,除了返回元组
(name, attribute)而不是名称。
object.__dict__是形式
{key: attribute, key2: atrribute2}等的字典。
object.__dict__.keys()有其他两个所缺少的。
从以下文档
inspect.getmembers():
当参数为类时,getmembers()不会返回元类属性(此行为是从dir()函数继承的)。
对于
int.__dict__.keys(),这是
['__setattr__', '__reduce_ex__', '__reduce__', '__class__', '__delattr__', '__subclasshook__', '__sizeof__', '__init__']
总之,
dir()并且
inspect.getmembers()基本上是相同的,同时
__dict__是完整的命名空间,包括元类的属性。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)