2016-11-18 129 views
1

我有一个类,像这样:如何将类变量的名称传递给函数?

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”不是解决方案。

这甚至可能吗?如果是这样,我怎么能实现这样的事情?

回答

2

您可以使用内置方法getattr来执行此操作。这里的print_all_varsgetattr

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

+1

这正是我所需要的!谢谢一堆。 – Grav

相关问题