任何人都可以通过适当的例子向我解释一下黑白之间有什么区别
>>> import inspect
>>> inspect.getmembers(1)
和
>>> type(1).__dict__.items()
和
>>> dir(1)
除了它们按顺序显示递减的属性和方法编号外。
1是整数(但可以是任何类型。)
编辑
>>>obj.__class__.__name__ #gives the class name of object
>>>dir(obj) #gives attributes & methods
>>>dir() #gives current scope/namespace
>>>obj.__dict__ #gives attributes
最佳答案
dir()
允许您通过定义__dir__()
来定制对象报告的属性。
从手册中,如果未定义__dir__()
:
这也是inspect.getmembers()
返回的内容,除了它返回(name, attribute)
的元组而不只是名称。object.__dict__
是{key: attribute, key2: atrribute2}
等形式的字典。object.__dict__.keys()
具有其他两个缺少的东西。
从inspect.getmembers()
的文档中:
对于int.__dict__.keys()
,这是
['__setattr__', '__reduce_ex__', '__reduce__', '__class__', '__delattr__', '__subclasshook__', '__sizeof__', '__init__']
总而言之,dir()
和inspect.getmembers()
基本相同,而__dict__
是包括元类属性的完整命名空间。关于python - inspect.getmembers()vs __dict __。items()vs dir(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6761106/