如何查找所有Python内置私有变量,如__file __,_ ____

Ale*_*eee 4 python document private built-in private-members

我想知道内置的私有变量,如所有的Python __file__,__name__和他们的目的.

但我没有在www.python.org上看到所有Python内置私有变量的文档.

我知道dir并且vars.

那么,如何找到它们?

0x9*_*x90 5

你怎么说:

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'f']
>>> [ i for i in dir() if i.startswith("__") and i.endswith("__")]
['__builtins__', '__doc__', '__name__', '__package__']
Run Code Online (Sandbox Code Playgroud)

您可以定义一个函数:

>>> def getprivates(obj):
        return [i for i in dir(obj) if i.startswith("__") and i.endswith("__")]
Run Code Online (Sandbox Code Playgroud)

并申请任何对象参考:

>>> getprivates(dir())
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__']
Run Code Online (Sandbox Code Playgroud)


Aar*_*all 2

隐藏属性有时被称为魔术方法(对于对象),作为参考,我会查看有关数据模型的 Python 文档,它们相当全面,并且可能涵盖您要查找的所有属性。

了解隐藏属性后,您可能知道想要获取什么,但隐藏属性可能因实现而异,因此要将其抽象出来,请使用检查模块:

import inspect
Run Code Online (Sandbox Code Playgroud)

获取大量信息

inspect.getmembers(inspect) 
Run Code Online (Sandbox Code Playgroud)

要获取文件和有关模块的更多信息:

>>> inspect.getfile(inspect)
'/usr/lib/python2.7/inspect.pyc'
>>> inspect.getmoduleinfo(inspect.getfile(inspect))
ModuleInfo(name='inspect', suffix='.pyc', mode='rb', module_type=2)
Run Code Online (Sandbox Code Playgroud)