Pythonのネストされたtry/exceptブロックは優れたプログラミング手法ですか?

| | |

私は自分のコンテナを作成しています。このコンテナは、属性呼び出しによって内部の辞書にアクセスできるようにする必要があります。コンテナの一般的な使用法は次のようになります。

  dict_container = DictContainer() dict_container ["foo"] = bar ... print dict_container.foo  

このようなものを書くのはばかげているかもしれませんが、それが私が提供する必要のある機能です。私はこれを次の方法で実装することを考えていました:

  def __getattribute __(self、item):try:return object .__ getattribute __(item)except AttributeError:try:return self.dict [item] KeyErrorを除く:print"オブジェクトにはそのような属性がありません"  

ネストされたtry/exceptブロックが適切かどうかわからないため、別の方法として<を使用します。 code> hasattr()およびhas_key()

  def __getattribute __(self、item):if hasattr(self、item):オブジェクトを返します。 __getattribute __(item)else:if self.dict.has_key(item):return self.dict [item] else:raise AttributeError(&quot; some Customized error&quot;) 

または使用するには

  def __getattribute __(self、item):if hasattr(self、item):return object .__ getattribute __(item)else:try:returnself。 KeyErrorを除くdict[item]:raise AttributeError(&quot; some Customized error&quot;) 

どのオプションが最もP ythonicでエレガントですか?

Pythonのネストされたtry/exceptブロックは優れたプログラミング手法ですか? __dict__: Questions

Pythonのネストされたtry/exceptブロックは優れたプログラミング手法ですか? has_key: Questions

Shop

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Best laptop for Zoom

$499

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News

Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method