Python:连接两个字符串以从类中获取变量

时间:2014-02-10 13:20:46

标签: python class

我有一个Python类,有一些变量。该类的定义如下:

class student:
    def __init__(self,name,rollno,DOB,branch):
       self.name=name
       self.rollno=rollno
       self.DOB=DOB
       self.branch=branch
       self.books=[]
       self.fines=[]

为学生添加新属性,并且还需要存储相应的值(以备将来使用)。这是使用setattr方法完成的,并且工作正常。

代码段:

setattr(student,"date_of_join",date())

现在我正在接近问题,因为如果用户添加了新属性(例如“ date_of_join ”),那么我会更新列表( studattr ),最初包含 [“name”,“rollno”,DOB“,”branch“,”books“,”fines“] 来更新属性列表。这意味着更新后的列表也会有”date_of_join“ “现在附加到它。

现在,如果我想访问学生实例的此属性列表,那么我该如何操作? (由于记录是动态更新的,让我们假设我必须访问x.date_of_join,那么如何加入这两个字符串?是否有类似于python的os.path.join,或者更确切地说是linux的系统调用,(合并两个)字符串)?)

问题:

for attribute in studattr:
    print attribute,x.attribute

{ This throws an Exception since the instance x has no variable or method named "attribute")  

PS:我尝试过使用inspect,inspect.getmembers(x)以及dirs(x),vars(x),(在stackoverflow上提到),但它只给出了主类体中变量/方法的列表而不是 init

1 个答案:

答案 0 :(得分:4)

使用getattr()访问动态属性:

for attr in student.studattr:
    print attr, getattr(student, attr)

或使用vars()会为您提供学生当前属性的字典:

for attr, value in vars(student).iteritems():
    print attr, value