Modifica __dict__ di un oggetto per impostare le sue proprietà considerate Pythonic?

8

Ho una classe che gonfia gli oggetti dalle righe trovate in un database (o un'altra fonte, ad esempio MongoDB, un file CSV, ecc.). Per impostare le proprietà dell'oggetto, fa qualcosa come self.__dict__.update(**properties) o obj.__dict__.update(**properties) .

Questo è considerato Pythonic? È un buon modello che dovrei continuare a usare, o è considerato una cattiva forma?

    
posta skyler 12.08.2013 - 20:53
fonte

1 risposta

6

In Python 3.3, è stato aggiunto un nuovo tipo, types.SimpleNamespace() , e nella documentazione è descritto così:

The type is roughly equivalent to the following code:

class SimpleNamespace:
    def __init__(self, **kwargs):
        self.__dict__.update(kwargs)
    def __repr__(self):
        keys = sorted(self.__dict__)
        items = ("{}={!r}".format(k, self.__dict__[k]) for k in keys)
        return "{}({})".format(type(self).__name__, ", ".join(items))

Nota il metodo __init__ del tipo; non puoi ottenere una migliore approvazione della tecnica rispetto alla documentazione di Python.

    
risposta data 12.08.2013 - 21:49
fonte

Leggi altre domande sui tag