我有一個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'。 –