我得到一個字典來初始化一個類的人。有一個領域的人:'名字'。 'name'字段是可選的,這意味着如果字典沒有'name'項,那麼沒有'name'值。我使用getter方法獲取實例屬性,但如果沒有「名稱」值,它將引發錯誤。我不知道有沒有什麼好的編程風格來改進我的代碼?因爲python在運行時創建實例字段,所以我不知道如何使用像java這樣的getter。python:實例屬性錯誤
class Person:
def __init__(self,person_dict):
try:
self.name = person_dict['name']
except Exception:
pass
def getName(self):
return self.name
pdict = {}
p = Person(pdict)
print p.getName()
AttributeError的:Person實例沒有屬性 '名'
正如你已經在答案中看到的那樣,getter不是'pythonic',也不是好的python代碼。 [這裏](http://tomayko.com/writings/getters-setters-fuxors)是一篇關於這是爲什麼的偉大文章。總結這篇文章:Java總是需要getter/setter,因爲沒有它們,重構使用它們是很困難的。使用python,你不會改變你的界面,因爲你可以使用[properties](http://docs.python.org/library/functions.html#property)。 – Darthfett 2012-04-18 15:01:31