代码之家  ›  专栏  ›  技术社区  ›  Ponkadoodle

检索对象上所有变量的键

  •  0
  • Ponkadoodle  · 技术社区  · 15 年前

    如果我有:

    class A(object):
        varA = 1
    
    inst = A()
    

    那么我如何检索inst上所有变量的键呢?我想要类似的东西 ["varA"]

    到目前为止,我得到了:

    vars(inst.__class__).keys() #returns ['__dict__', '__weakref__', '__module__', 'varA', '__doc__']
    

    我没意见,我只是忽略了两个下腔。我的问题是继承的多层,比如:

    class A(object):
        varA = 1
    
    class B(A):
        varB = 2
    
    inst = B()
    vars(inst.__class__).keys() #returns ['__module__', '__doc__', 'varB']
    

    但我想取回varb和vara。知道我该怎么做吗?

    我也尝试过:

    vars(super(B, inst).__class__).keys()+vars(inst.__class__).keys()
    

    但这并没有达到我的预期。

    如果重要的话,我使用的是python 2.6。

    编辑:实际上我只是偶然发现了一个非常简单的方法: dir(inst)

    1 回复  |  直到 15 年前
        1
  •  1
  •   miku    15 年前

    有一个python模块,名为 inspect 用于运行时内省。也许吧 inspect.getmembers 可以帮你…