任何人都可以通过适当的例子向我解释一下黑白之间有什么区别

>>> 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/

10-12 18:44