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

Python 列出对象属性及其值的编程方式?,python,object,Python,Object,我对Python还是比较陌生的,所以如果我缺少一些基本的东西,请随时告诉我 为了便于调试,我养成了为我创建的每个对象创建show()过程的习惯。例如: class YourMom: def __init__(self): self.name = "" self.age = "" self.children = [] #End init() def show(self): print "Name is '%s

我对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()过程而无需每次手动编写

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

是的,它是一个名为的python内置函数

正如wim所说,您可以在任何具有
\uuu dict\uuu
属性的对象上使用
vars
。但是,如果您处理的对象不是这样,则可以使用。请注意,这将返回与之关联的每个方法和字段,甚至是
\uuuuueq\uuuu
\uuuu ne\uuuu
之类的方法和字段

如果键入:

dir(YourMom())
进入解释器,结果如下:

“UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU新的、新的、缩小的、缩小的、缩小的、缩小的、缩小的、缩小的、年龄的、孩子的、名字的,“显示”]

如果您想做比显示所有内容更复杂的事情,您可能需要签出

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

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',)]


a
可以是您想要的任何类型,老实说-将其转换为只获取对象并返回列表的方法非常容易。

您知道该方法的可能副本吗?该方法控制对象的打印方式。@CodyPiersall我很确定他们不需要在I中编写任何特定于对象的方法r类。这是我一直在寻找的。这真的很难看,但列出对象属性和它们的值是我想要的。inspect函数也很酷,谢谢你Furkle。我认为因为我太新了,我的问题太基本了,vars()可能更适合未来的读者作为正式的“答案”。我很高兴它在这里。@Locane好吧,请记住,你在做的事情中有很多噪音。这个解决方案实际上提供了你想要的东西,而不是你必须显示的90%的垃圾(这将使你的日志记录有90%的噪音)或者以某种方式过滤,这会很困难,因为你只需要使用字符串,而没有真正的方法来解释它们。我同意-这有点复杂,但我认为这是值得努力的。