Get locals from calling namespace in Python

前端 未结 3 1143
野性不改
野性不改 2020-11-30 05:00

I want to retrieve the local variables from Python from a called function. Is there any way to do this? I realize this isn\'t right for most programming, but I am basically

3条回答
  •  借酒劲吻你
    2020-11-30 05:19

    You use the python builtin, dir() or vars():

    vars(object)

    For examples using dir(), see: this post

    Examples using vars:

    >>> class X:
    ...     a=1
    ...     def __init__(self):
    ...         b=2
    ... 
    >>> 
    >>> vars(X)
    {'a': 1, '__module__': '__main__', '__doc__': None, '__init__': }
    >>> 
    >>> vars(X())
    {}
    

    A potentially problematic fact: New style classes not return the same result

    >>> class X(object):
    ...     a=1
    ...     def __init__(self):
    ...         b=2
    ... 
    >>> 
    >>> vars(X)
    
    >>> vars(X())
    {}
    

    Also: for an instantiated class (new and old style), if you add a variable after instantiating, vars will return the object's dict like this:

    >>> x = X() 
    >>> x.c = 1
    >>> vars(x)
    {'c': 1}
    >>> 
    

    See: http://docs.python.org/library/functions.html#vars

提交回复
热议问题