__file__、__name__、__dict__方法整理

本文主要介绍__file__、__name__、__dict__三个方法的作用。

#01  __file__:打印当前文件的位置。
# import os
# print(__file__)  # 在pycharm执行时默认加上绝对路径
# print(os.path.dirname(__file__))   # 打印当前文件的上一层目录(dirname是返回文件/文件夹所在的上层目录)

#02  __name__:如果是在当前文件执行__name__=__main__,如果当前文件被其他文件调用,则__name__ = 该文件名
# print(__name__)
# def test():
#     print("we are in %s"%__name__)
# if __name__ == '__main__':
#     test()

#03 __dict__:python中的类,都会从object里继承一个__dict__属性,这个属性中存放着类的属性和方法对应的键值对,实例化__dict__会直接输出__init__中的self.xxx
#03 __dict__:查询类中所有的内容(包括静态属性、动态方法),类名.__dict__

class A(object): """ Class A. """ a = 0 b = 1 def __init__(self): self.a = 2 self.b = 3 def test(self): print ('a normal func.') @staticmethod def static_test(self): print( 'a static func.') @classmethod def class_test(self): print ('a calss func.') obj = A() print (A.__dict__) print (obj.__dict__) ''' 运行结果: {'a': 0, '__module__': '__main__', 'b': 1, 'class_test': <classmethod object at 0x00000000021882E8>, '__dict__': <attribute '__dict__' of 'A' objects>, '__init__': <function __init__ at 0x00000000023A5BA8>, 'test': <function test at 0x00000000023A5C18>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': '\n Class A.\n ', 'static_test': <staticmethod object at 0x00000000021881C8>} {'a': 2, 'b': 3} ''' ''' 总结:   1) 内置的数据类型没有__dict__属性。   2) 每个类有自己的__dict__属性,就算存着继承关系,父类的__dict__ 并不会影响子类的__dict__。   3) 对象也有自己的__dict__属性, 存储self.xxx 信息,父子类对象公用__dict__。 4) int, list, dict等这些常用的数据类型是没有__dict__属性的。 5) python中的类,都会从object里继承一个__dict__属性,这个属性中存放着类的属性和方法对应的键值对。 6) 类的__dict__并不包含其父类的属性。 7) 实例__dict__存有与实例相关的实例变量和函数,实例__dict__下self.xxx的属性值,其他的都是不输出。 '''

 

posted @ 2018-11-29 16:05  马玉刚  阅读(762)  评论(0编辑  收藏  举报