python __base__等内置方法
2015-08-29 20:52
671 查看
# coding=utf-8_ _author__ = "leaves" class Base(object): a = 0 def __init__(self): self._a = 10 pass class Child(Base): "测试测试" _b = 10 def __str__(self): print "My Name is Child" class Child2(Child, Base): # (Child,Base)顺序不能反 "测试测试" _b = 10 child = Child() child2 = Child2() print isinstance(child, Child) print isinstance(child, Base) print issubclass(Child, Base) print child.__class__ # 告诉某个实例对象是哪个类 print child.__module__ # 模块名称 print Child.__module__ print child.__doc__ print child.__dict__ # 显示的是child这个实例的属性,用self修饰的属性 print Child.__dict__ # 显示的是Child这个类的属性 print Base.__dict__ print Child.mro() print Base.mro() print child.__class__.__mro__ # 解析方法调用的顺序。super的执行路径和类的__mro__列举的类顺序吻合 print child2.__class__.__mro__ print child.__class__.__base__ # 列出其直接基类 print child2.__class__.__base__ print child.__class__.__bases__ # 列出其除object的所有基类 print child2.__class__.__bases__ print child.__str__() # 如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__"。 print child2.__class__.__name__ print __name__
输出:
True True True <class '__main__.Child'> __main__ __main__ 测试测试 {'_a': 10} {'__module__': '__main__', '_b': 10, '__str__': <function __str__ at 0x000000000256F048>, '__doc__': '\xe6\xb5\x8b\xe8\xaf\x95\xe6\xb5\x8b\xe8\xaf\x95'} {'a': 0, '__module__': '__main__', '__dict__': <attribute '__dict__' of 'Base' objects>, '__weakref__': <attribute '__weakref__' of 'Base' objects>, '__doc__': None, '__init__': <function __init__ at 0x0000000002520F98>} [<class '__main__.Child'>, <class '__main__.Base'>, <type 'object'>] [<class '__main__.Base'>, <type 'object'>] (<class '__main__.Child'>, <class '__main__.Base'>, <type 'object'>) (<class '__main__.Child2'>, <class '__main__.Child'>, <class '__main__.Base'>, <type 'object'>) <class '__main__.Base'> <class '__main__.Child'> (<class '__main__.Base'>,) (<class '__main__.Child'>, <class '__main__.Base'>) My Name is Child None Child2 __main__
2.1.模块(module)
__doc__: 文档字符串。如果模块没有文档,这个值是None。
*__name__: 始终是定义时的模块名;即使你使用import.. as 为它取了别名,或是赋值给了另一个变量名。
*__dict__: 包含了模块里可用的属性名 - 属性的字典;也就是可以使用模块名.属性名访问的对象。
__file__: 包含了该模块的文件路径。需要注意的是内建的模块没有这个属性,访问它会抛出异常!
2.2.类(class )
__doc__: 文档字符串
。如果类没有文档,这个值是None。
*__name__: 始终是定义时的类名。
*__dict__: 包含了类里可用的属性名 - 属性的字典;也就是可以使用类名.属性名访问的对象。
__module__: 包含该类的定义的模块名;需要注意,是字符串形式的模块名而不是模块对象。
*__bases__: 直接父类对象的元组;但不包含继承树更上层的其他类,比如父类的父类。
2.3.实例(instance)
实例是指类实例化以后的对象。
*__dict__: 包含了可用的属性名 - 属性字典。
*__class__: 该实例的类对象。对于类Cat,cat.__class__ == Cat
为
True
2.4.内建函数和方法(built - in functions and methods)
根据定义,内建的(built - in)
模块是指使用C写的模块,可以通过sys模块的builtin_module_names字段查看都有哪些模块是内建的。这些模块中的函数和方法可以使用的属性比较少,不过一般也不需要在代码中查看它们的信息。
__doc__: 函数或方法的文档。
__name__: 函数或方法定义时的名字。
__self__: 仅方法可用,如果是绑定的(bound),则指向调用该方法的类(如果是类方法)或实例(如果是实例方法),否则为None。
*__module__: 函数或方法所在的模块名。
2.5.函数(function)
这里特指非内建的函数。注意,在类中使用def定义的是方法,方法与函数虽然有相似的行为,但它们是不同的概念。
__doc__: 函数的文档;另外也可以用属性名func_doc。
__name__: 函数定义时的函数名;另外也可以用属性名func_name。
*__module__: 包含该函数定义的模块名;同样注意,是模块名而不是模块对象。
*__dict__: 函数的可用属性;另外也可以用属性名func_dict。
2.6. 方法(method)
方法虽然不是函数,但可以理解为在函数外面加了一层外壳;拿到方法里实际的函数以后,就可以使用2.5节的属性了。
__doc__: 与函数相同。
__name__: 与函数相同。
*__module__: 与函数相同。
参考:
http://blog.csdn.net/mldxs/article/details/8652010
相关文章推荐
- python中get、post数据
- Windows搭建python开发环境,python入门到精通[一]
- 一步步学习Python-django开发-Mac下搭建Python-Django环境
- Python中的列表生成式和多层表达式
- 使用Python脚本将文字转换为图片的实例分享
- 利用python收发邮件功能实现远程电脑的控制
- Python 函数之参数、局部变量
- Python扫描内网存活的主机
- python2.7 beautifulsoup学习使用
- python2.7 beautifulsoup安装下载
- Python分词模块推荐:jieba中文分词
- python内置函数汇总(2)
- python类型转换、数值操作
- Python 函数之函数定义、调用、传参
- Python找回MySQL密码
- Python之包管理工具
- Python中的编码问题
- 理解Python中的with…as…语法
- python 类和对象的属性
- python 有关super