列出对象属性及其值的编程方式?

2024-04-25 23:50:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还是比较陌生的,所以如果有什么基本的东西我没有,尽管告诉我。在

为了便于调试,我习惯于为我创建的每个对象创建一个show()过程。例如:

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()过程?在

编辑: 这里有一个类似的问题:List attributes of an object 但是我在查找对象属性中的值以及它们的列表。在


Tags: 对象nameselfageinitis过程def
2条回答

是的,它是一个python内置函数^{}。在

正如wim所说,您可以在任何具有__dict__属性的对象上使用vars。但是,如果处理的对象不是这样,则可以使用^{}。请注意,这将返回与之相关联的每个方法和字段,即使是__eq__和{}。在

如果您键入:

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。在

例如,如果只想显示与任何其他对象不同的对象的属性:

^{pr2}$

这将返回:

[('age', ''), ('children', []), ('name', ''), ('show', <bound method YourMom.show of <__main__.YourMom object at 0x02DC1B50>>)]

坦白地说,a可以是任何你想要的类型——把它变成一个只接受一个对象并返回一个列表的方法是非常容易的。在

相关问题 更多 >

    热门问题