這樣為什么不行
class Person(object): ? ?def __init__(self, name, gender, **kw): ? ? ? ?for k,v in kv: ? ? ? ? ? ?self.k = v p = Person('Bob', 'Male', age=18, course='Python') print p.age print p.course
為什么不行
class Person(object): ? ?def __init__(self, name, gender, **kw): ? ? ? ?for k,v in kv: ? ? ? ? ? ?self.k = v p = Person('Bob', 'Male', age=18, course='Python') print p.age print p.course
為什么不行
2015-11-26
舉報
2016-01-21
你想寫的應該是這樣的,你的代碼里有點兒基本的錯誤,我稍作修改了一下。下面說一下我自己的理解
這段代碼運行的時候會輸出 Bob 報錯會提示Person中沒有age的屬性,但是如果我們寫:
,那么結果會輸出 18。也就是說代碼中的
并不是把 v='age'中age賦值給了Person屬性,而是把v當做了Person的屬性了。這一章節中介紹的setattr()的方法應該是在函數中將v取到的值進行了處理,進而轉化為類的屬性。
個人之見,歡迎指正
2015-11-27
k,v分別代表字典中的鍵和值,你的寫法是錯誤的