私はクラスの人を初期化するためのdictを取得します。人の中には「名前」というフィールドが1つあります。 'name'フィールドはオプションです。つまり、dictに 'name'項目がない場合、personの 'name'値はありません。インスタンス属性を取得するためにゲッターメソッドを使用しますが、 'name'値がない場合はエラーをスローします。私は自分のコードを改善する良いプログラミングスタイルがあるのか分かりませんか? 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インスタンスには、属性 '名前' self.name = person_dict.get('name')
は、例外を発生させないであろうと、Personオブジェクトは、(デフォルトではNone
)
UPDをname
属性を持つことになります。この場合
あなたがすでに答えで見てきたように、ゲッターは「pythonic」ではありません。いいpythonコードではありません。 [ここ](http://tomayko.com/writings/getters-setters-fuxors)は、なぜこれについてのすばらしい記事です。記事をまとめるには、Javaではgetter/setterが必要です。それがなければ、それを使うためのリファクタリングは難しいからです。 pythonでは、[properties](http://docs.python.org/library/functions.html#property)を使用することができるので、インタフェースを変更する必要はありません。 – Darthfett