我有一个Python类,有一些变量。类的定义如下: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“,”罚款“]以更新属性列表。这意味着更新后的列表现在也会附加”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.getmembers(X)以及迪尔斯(X),瓦尔(X),(#2自提),但它只给出了主类体中变量/方法的列表,而不是init。
我猜你需要'getattr':'GETATTR( x,属性)' –
而不是使用你设置属性的对象实例,而不是一个正常的字典更适合你想要做的? – RemcoGerlich
如果你正在获得主类主体中的变量/方法列表,那么你没有在实例上运行'dir'。 –