【发布时间】:2015-02-02 20:21:25
【问题描述】:
Python iterating through object attributes
我在尝试理解 Objects 的迭代时发现了这个问题,并找到了 Eric Leschinski 的回复:
class C:
a = 5
b = [1,2,3]
def foobar():
b = "hi"
c = C
for attr, value in c.__dict__.iteritems():
print "Attribute: " + str(attr or "")
print "Value: " + str(value or "")
生成的文本列出了 C 类中的所有属性,包括函数和隐藏属性(下划线包围),如下所示:
python test.py
Attribute: a
Value: 5
Attribute: foobar
Value: <function foobar at 0x7fe74f8bfc08>
Attribute: __module__
Value: __main__
Attribute: b
Value: [1, 2, 3]
Attribute: __doc__
Value:
现在,我了解了如何从迭代中过滤掉“隐藏”属性,但是有没有办法过滤掉所有函数呢?实际上,我正在寻找,在C 类中,只有属性a 和b,按顺序列出,没有__module__ 和__doc__ 信息,也没有恰好在@987654332 中的任何和所有功能@。
【问题讨论】:
-
如果可调用(属性)
-
@Kasra AD 在这种情况下的不同之处在于我正在寻找属性的值,而不是属性的名称,尽管这可能没有被清楚地传达。