__doc__,__dict__和__dir__()的区别

Posted smillepro

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__doc__,__dict__和__dir__()的区别相关的知识,希望对你有一定的参考价值。

__doc__,__dict__和__dir__(),这三个内置函数老是混淆,下面做出区别:

__doc__:得到的是一个文档信息

__dict__:返回的是一个字典,字典的内容是类的属性

__dir__():返回的是关于函数或者类的属性和方法以及内置的函数等,如果没有括号就是一个返回一个对象的地址

__name__:返回的是函数的名字

class A:
    ‘‘‘
    这个是调试
    ‘‘‘
    def fun(self):
        print(in func)

a = A()
a.name = alex
a.age = 84

ret = getattr(a,name)
print(ret)
print(a.__dict__) # {‘name‘: ‘alex‘, ‘age‘: 84}
print(a.__dir__)  # [‘name‘, ‘age‘, ‘__module__‘, ‘__doc__‘, ‘fun‘, ‘__dict__‘, ‘__weakref__‘, ‘__repr__‘, ‘__hash__‘, ‘__str__‘, ‘__getattribute__‘, ‘__setattr__‘, ‘__delattr__‘, ‘__lt__‘, ‘__le__‘, ‘__eq__‘, ‘__ne__‘, ‘__gt__‘, ‘__ge__‘, ‘__init__‘, ‘__new__‘, ‘__reduce_ex__‘, ‘__reduce__‘, ‘__subclasshook__‘, ‘__init_subclass__‘, ‘__format__‘, ‘__sizeof__‘, ‘__dir__‘, ‘__class__‘]
print(a.__doc__)  # 这个是调试
ret = getattr(a,fun)
ret()

def func():
    ‘‘‘
    又是一个调试
    :return:
    ‘‘‘
    gender = 
    phone = 10086
    return gender+phone

print(func.__dict__)  # {}
print(func.__dir__())  # [‘__repr__‘, ‘__call__‘, ‘__get__‘, ‘__new__‘, ‘__closure__‘, ‘__doc__‘, ‘__globals__‘, ‘__module__‘, ‘__code__‘, ‘__defaults__‘, ‘__kwdefaults__‘, ‘__annotations__‘, ‘__dict__‘, ‘__name__‘, ‘__qualname__‘, ‘__hash__‘, ‘__str__‘, ‘__getattribute__‘, ‘__setattr__‘, ‘__delattr__‘, ‘__lt__‘, ‘__le__‘, ‘__eq__‘, ‘__ne__‘, ‘__gt__‘, ‘__ge__‘, ‘__init__‘, ‘__reduce_ex__‘, ‘__reduce__‘, ‘__subclasshook__‘, ‘__init_subclass__‘, ‘__format__‘, ‘__sizeof__‘, ‘__dir__‘, ‘__class__‘]
print(func.__name__)  # 函数的名字
print(func.__doc__)  # 文档

 

以上是关于__doc__,__dict__和__dir__()的区别的主要内容,如果未能解决你的问题,请参考以下文章

python实例属性的显示方法-dir__dict__

__dict__和dir()的区别

python的dir()和__dict__属性的区别

Python实战之dict简单练习

Python __dict__与dir()区别

python遍历并获取对象属性--dir(),__dict__,getattr,setattr