2016-11-18 86 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