内置的方法和属性
有些对象类型内置了一些可读属性,它们不会被dir()
列举出来。
属性/方法 | 描述 |
---|---|
instance._class_ | 类实例所属的类 |
class._bases_ | 类对象(类也是对象)的基类元组 |
definition._name_ | 类、函数、方法、描述符或生成器实例的名称。 |
class._mro_ | 此属性是在方法解析期间查找基类时考虑的类元组。 |
class._subclasses_() | 每个类都保留一个对其直接子类的弱引用列表。此方法返回所有仍然存活的引用的列表。该列表按定义顺序排列。 |
module._dict_ | 包含模块的符号表的字典,包括标识符名称和它的引用 |
_builtins_ | 一般被模块作为全局变量提供,它的值或者是builtins模块的引用,或者是则这个模块的__dict__属性。如果是builtins模块,该模块提供Python的所有“内置”标识符的直接访问,例如open函数builtins.open()。这个变量在定义与内置函数同名的模块有用处,可以通过它访问内置的同名函数。另外,还可以通过它修改某些标识符的作用。 |
判断一个模块是否有_builtins_:__builtins__变量是对builtins模块的引用,在sys模块导入了builtins模块的,sys模块是由Python/sysmodule.c编译的,也就是说当一个模块直接或间接(导入的模块里面)导入了sys模块。sys模块是由c程序编译的,但它没有__builtins__变量。
__builtins__的值是当前模块引用的builtins模块:
>>> __builtins__
<module 'builtins' (built-in)>
module.__builtins__的值是指定模块的所有标识符的字典,与__dict__相比,除了变量,还多出了其它标识符,例如:
>>> os.__builtins__['TimeoutError']
<class 'TimeoutError'>
属性/方法 | 描述 |
---|---|
_import_() | 内置函数,它在importlib包下的_bootstrap模块下定义的__import__()方法的实现,在程序运行开始时,这个包就被导入,所以这个方法也被导入当成内置函数。 |
method._globals_ | 在指定的方法处的全局命名空间(等同于dir(), globals())。method不能是内置的方法名,而是自己定义或者重写的,重写的__init__也算。 |
object._new_(cls[…]) | 对象的 |