Les blocs try/except imbriqués en Python sont-ils une bonne pratique de programmation ?

| | |

J'écris mon propre conteneur, qui doit donner accès à un dictionnaire à l'intérieur par des appels d'attributs. L'utilisation typique du conteneur serait comme ceci :

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

Je sais qu'il peut être stupide d'écrire quelque chose comme ça, mais c'est la fonctionnalité que je dois fournir. Je pensais implémenter ceci de la manière suivante :

def __getattribute__(self, item): try: return object.__getattribute__(item) except AttributeError: try: return self.dict[item] except KeyError: print "L'objet n'a pas un tel attribut" 

Je ne suis pas sûr que les blocs try/except imbriqués soient une bonne pratique, donc une autre façon serait d'utiliser hasattr() et has_key() :

def __getattribute__(self, item) : si hasattr(self, item) : renvoie l'objet. __getattribute__(item) else : if self.dict.has_key(item) : return self.dict[item] else : raise AttributeError("une erreur personnalisée") 

Ou pour en utiliser une d'entre eux et un bloc try catch comme ceci :

def __getattribute__(self, item): if hasattr(self, item): return object.__getattribute__(item) else: try: return self. dict[item] except KeyError : raise AttributeError("une erreur personnalisée") 

Quelle option est la plus P ythonique et élégant ?

Les blocs try/except imbriqués en Python sont-ils une bonne pratique de programmation ? __dict__: Questions

Les blocs try/except imbriqués en Python sont-ils une bonne pratique de programmation ? 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