¿Son los bloques try/except anidados en Python una buena práctica de programación?

| | |

Estoy escribiendo mi propio contenedor, que necesita dar acceso a un diccionario interno mediante llamadas de atributo. El uso típico del contenedor sería así:

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

Sé que podría ser estúpido escribir algo como esto, pero esa es la funcionalidad que necesito proporcionar. Estaba pensando en implementar esto de la siguiente manera:

def __getattribute__(self, item): try: return object.__getattribute__(item) excepto AttributeError: try: return self.dict[item] excepto KeyError: print "El objeto no tiene tal atributo" 

No estoy seguro de si los bloques anidados try/except son una buena práctica, por lo que otra forma sería usar hasattr() and has_key():

def __getattribute__(self, item): if hasattr(self, item): objeto devuelto. __getattribute__(item) else: if self.dict.has_key(item): return self.dict[item] else: aumentar AttributeError("algún error personalizado") 

O usar uno de ellos y uno intenta atrapar un bloque como este:

def __getattribute__(self, item): if hasattr(self, item): return object.__getattribute__(item) else: try: return self. dict[item] excepto KeyError: aumentar AttributeError("algún error personalizado") 

¿Qué opción es la más P ¿tónico y elegante?

¿Son los bloques try/except anidados en Python una buena práctica de programación? __dict__: Questions

¿Son los bloques try/except anidados en Python una buena práctica de programación? 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