Являются ли вложенные блоки try/except в Python хорошей практикой программирования?

| | |

Я пишу свой собственный контейнер, который должен предоставлять доступ к словарю внутри с помощью вызовов атрибутов. Типичное использование контейнера будет таким:

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

Я знаю, что писать что-то подобное может быть глупо, но мне нужно предоставить именно эту функциональность. Я думал реализовать это следующим образом:

def __getattribute__(self, item): try: return object.__getattribute__(item), кроме AttributeError: try: return self.dict[item] кроме KeyError: print "У объекта нет такого атрибута" 

Я не уверен, что вложенные блоки try/except являются хорошей практикой, поэтому другим способом будет использование hasattr() и has_key():

def __getattribute__(self, item): если hasattr(self, item): вернуть объект. __getattribute__(item) else: if self.dict.has_key(item): return self.dict[item] else: поднять AttributeError("некоторая настроенная ошибка") 

Или использовать один из них и один блок try catch следующим образом:

def __getattribute__(self, item): if hasattr(self, item): return object.__getattribute__(item) else: try: return self. dict[item] кроме KeyError: поднять AttributeError("какая-то пользовательская ошибка") 

Какой вариант больше P изящно и элегантно?

Являются ли вложенные блоки try/except в Python хорошей практикой программирования? __dict__: Questions

Являются ли вложенные блоки try/except в Python хорошей практикой программирования? 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