所以基本上我需要帮助懒惰。
是否可以在python中获取一个对象,然后列出所有它的变量
例如
class some_object:
def __init__(self):
self.Name = None
self.UUID = None
然后调用一个魔术函数,列出对象中的所有变量名
并且可能返回看起来接近这个的东西:
[some_object.Name, some_object.UUID]
请记住,我不需要附加到对象的值,而是变量的名称,例如Name和UUID
如果有人能帮助我,那就太棒了。
编辑: 感谢大家回答我的问题,我需要的神奇功能是vars()。我非常感谢每个人在这个问题上的努力和投入
答案 0 :(得分:2)
您可以使用vars():
class about_me:
def __init__(self):
self.name = "Lyend Victorian"
self.age = "25"
self.height = "180"
me = about_me()
>>> vars(me)
{'age': '25', 'name': 'Lyend Victorian', 'height': '180'}
答案 1 :(得分:2)
您可以使用dir()
函数获取对象所具有的(某些)属性的列表,如下所示:
>>> class Foo:
... def __init__(self):
... self.name = None
... self.uuid = None
>>> thing = Foo()
>>> dir(thing)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name', 'uuid']
或者,vars()
函数可用于获取对象的__dict__
属性:
>>> class Foo:
... def __init__(self):
... self.name = None
... self.uuid = None
>>> thing = Foo()
>>> vars(thing)
{'name': None, 'uuid': None}
然而,正如一些评论者指出的那样,有可能有更好的方法来完成你想要做的事情。 dir()
函数不一定会返回对象具有的所有属性的完整列表;来自文档:
如果对象未提供
__dir__()
,则该函数会尽力从对象的__dict__
属性(如果已定义)及其类型对象中收集信息。生成的列表不一定完整,并且当对象具有自定义__getattr__()
时可能不准确。因为
dir()
主要是为了方便在交互式提示中使用而提供的,所以它试图提供一组有趣的名称,而不是尝试提供严格或一致定义的名称集,以及它的详细行为可能会在不同的版本例如,当参数是类时,元类属性不在结果列表中。