2015-10-21 11 views

risposta

7

object.__dict__, a differenza di altri __dict__ s, restituisce un oggetto mappingproxy (un dict_proxy in Python 2). Questi sono creati al volo quando è richiesto __dict__. Di conseguenza, ottieni un nuovo proxy ogni volta che accedi a object.__dict__. Proiettano tutti lo stesso oggetto sottostante, ma il proxy è sempre nuovo. Ecco perché non puoi averne due identici.

+0

Detto questo, '{'foo': 'bar'} è {'foo': 'bar'}' sembra essere 'False', anche ... non è un comportamento dict più ampio, non qualcosa di specifico per '.__ dict__' oggetto? – DreadPirateShawn

+0

Grazie, perché questo mappingproxy non può essere memorizzato nella cache e quindi riutilizzarlo? – NathaneilCapital

+2

@DreadPirateShawn è perché stai creando * due dizionari separati *. 'd = {'pippo': 'bar'}; d è d' si comporterà come ci si aspetta. – jonrsharpe

Problemi correlati