如何将类变量的名称传递给函数?

时间:2016-11-18 00:37:27

标签: python

我有一堂课,就像这样:

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号码。

但是,我并没有尝试传递namessn中的数据,只是实际的变量名称。显然使用字符串" name"和" ssn"不是解决方案。

这甚至可能吗?如果是这样,我怎么能实现这样的东西呢?

1 个答案:

答案 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"))。