blocchi nidificati di prova/tranne in Python sono una buona pratica di programmazione?

| | |

Sto scrivendo il mio contenitore, che deve dare accesso a un dizionario all'interno tramite chiamate di attributi. L'uso tipico del contenitore sarebbe questo:

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

So che potrebbe essere stupido scrivere qualcosa del genere, ma questa è la funzionalità che devo fornire. Stavo pensando di implementarlo nel modo seguente:

def __getattribute__(self, item): try: return object.__getattribute__(item) eccetto AttributeError: try: return self.dict[item] eccetto KeyError: print "L'oggetto"non ha tale attributo" 

Non sono sicuro che i blocchi try/exnce nidificati siano una buona pratica, quindi un altro modo sarebbe usare hasattr() e has_key():

def __getattribute__(self, item): if hasattr(self, item): restituisce l'oggetto. __getattribute__(item) else: if self.dict.has_key(item): return self.dict[item] else: raise AttributeError("qualche errore personalizzato") 

Oppure per usarne uno di loro e un try catch block come questo:

def __getattribute__(self, item): if hasattr(self, item): return object.__getattribute__(item) else: try: return self. dict[item] eccetto KeyError: raise AttributeError("qualche errore personalizzato") 

Quale opzione è più P itonico ed elegante?

blocchi nidificati di prova/tranne in Python sono una buona pratica di programmazione? __dict__: Questions

blocchi nidificati di prova/tranne in Python sono una buona pratica di programmazione? 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