我得到一个字典来初始化一个类的人。有一个领域的人:'名字'。 '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