我有一堂课,就像这样:
class Student:
self.name
self.email
self.age
self.ssn
我想在类外创建一个函数,它可以接收一个类变量作为参数,所以像这样:
def print_all_vars(list_of_objects, class_var):
for obj in list_of_objects:
print obj.class_var
print_all_vars(students, name)
print_all_vars(students, ssn)
...如果这段代码有效,它会打印所有学生的姓名,然后是所有的ssn号码。
但是,我并没有尝试传递name
和ssn
中的数据,只是实际的变量名称。显然使用字符串" name"和" ssn"不是解决方案。
这甚至可能吗?如果是这样,我怎么能实现这样的东西呢?
答案 0 :(得分:1)
您可以使用内置方法getattr
来执行此操作。这是print_all_vars
getattr
。
def print_all_vars(list_of_objects, class_var):
for obj in list_of_objects:
print getattr(obj, class_var)
请注意,要使用它,class_var
必须是字符串(例如print_all_vars(students, "name")
)。