Python ci fornisce molte possibilità sull'attributo esempio/classe, ad esempio:Qual è l'attributo python ottenere e impostare l'ordine?
class A(object):
def __init__(self):
self.foo = "hello"
a = A()
Esistono diversi modi per accedere/modificare il valore di self.foo
:
- accesso diretto
a.foo
- dict interno
a.__dict__['foo']
- ottenere e impostare
a.__get__
ea.__set__
, ovviamente ci sono due metodi predefiniti. - getattribute
a.__getattribute__
__getattr__
e__setattr__
- forse di più.
Durante la lettura del codice sorgente, mi perdo sempre di quale sia il loro ultimo ordine di accesso? Quando utilizzo a.foo
, come faccio a sapere quale metodo/attributo verrà chiamato in realtà?
1. 'pippo' è un attributo * istanza *, non un attributo di classe. 2. Poiché non è un '@ property' (o un altro descrittore)' __get__' e '__set__' non saranno coinvolti. – jonrsharpe
Ad es. '__getattr__' vs.' __getattribute__', vedi http://stackoverflow.com/q/3278077/3001761 – jonrsharpe