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

관련 문제