__doc__,__dict__和__dir__()的区别

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

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

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

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

__name__:返回的是函数的名字

__main__:返回的是本模块。sys.modules['__main__'].属性或者方法

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__)  # 文档

 

posted on 2019-03-14 12:14  smile大豆芽  阅读(323)  评论(0编辑  收藏  举报