码迷,mamicode.com
首页 > 其他好文 > 详细

__doc__,__dict__和__dir__()的区别

时间:2019-03-14 13:13:31      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:setattr   reduce   subclass   fun   类的属性   code   new   lex   strong   

__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__()的区别

标签:setattr   reduce   subclass   fun   类的属性   code   new   lex   strong   

原文地址:https://www.cnblogs.com/smillepro/p/10529486.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!