Programmatic way to list object properties and their values?
我对python还是比较陌生的,所以请随时告诉我是否有一些基本的东西我遗漏了。
为了方便调试,我养成了为我创建的每个对象创建show()过程的习惯。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class YourMom: def __init__(self): self.name ="" self.age ="" self.children = [] #End init() def show(self): print"Name is '%s'" % (self.name) print"Age is '%s'" % (self.age) for i in self.children: print" Children: '%s'" % (i) #End show() #End YourMom class |
所以我的问题很简单:是否有一种程序化的方法来执行show()过程,而不需要每次都手动编写它?
编辑:这里有一个类似的问题:列出对象的属性但我在查找对象属性中的值以及它们的列表。
正如wim所说,您可以在具有
如果键入:
1 | dir(YourMom()) |
在解释器中,这是结果:
['__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__', 'age', 'children', 'name', 'show']
如果您想做比显示所有内容更复杂的事情,您可能需要签出inspect。
例如,如果只想显示与任何其他对象不同的对象属性:
1 2 3 4 5 6 7 | import inspect a = YourMom() # type is irrelevant below. comma after 'object' is critical, # because the argument needs to be a tuple plain_old_object = dir(type('plain', (object,), {})) interesting_items = [item for item in inspect.getmembers(a) if item[0] not in plain_old_object] |
这种回报:
[('age', ''), ('children', []), ('name', ''), ('show', >)]
诚实地说,
是的,它是一个名为