我有一个Python对象,它有多个属性和方法。我想迭代对象属性。
class my_python_obj(object):
attr1='a'
attr2='b'
attr3='c'
def method1(self, etc, etc):
#Statements
我想以动态方式生成一个字典,包含所有对象属性及其当前值,这样如果我稍后添加另一个属性,就不必记得同时更新我的函数。在php中,变量可以用作键,但在Python中,对象是不可索引的,如果我使用点符号表示属性,它将创建一个名为我的变量名称的新属性,这不是我的意图。
只是为了让事情更清晰:
def to_dict(self):
'''this is what I already have'''
d={}
d["attr1"]= self.attr1
d["attr2"]= self.attr2
d["attr3"]= self.attr3
return d
def to_dict(self):
'''this is what I want to do'''
d={}
for v in my_python_obj.attributes:
d[v] = self.v
return d
更新: 在这里,属性指的只是该对象的变量,而不是方法。
predicate
参数来传递一个可调用对象,它会过滤掉(绑定?)函数(这样就可以去掉方法)。 - Hank Gay