Ho questo codice:Perché non posso aggiungere direttamente attributi a qualsiasi oggetto Python?
>>> class G:
... def __init__(self):
... self.x = 20
...
>>> gg = G()
>>> gg.x
20
>>> gg.y = 2000
E questo codice:
>>> from datetime import datetime
>>> my_obj = datetime.now()
>>> my_obj.interesting = 1
*** AttributeError: 'datetime.datetime' object has no attribute 'interesting'
Dalla mia conoscenza di Python, direi che datetime
override setattr
/getattr
, ma non sono sicuro. Potresti fare un po 'di luce qui?
EDIT: Non sono specificamente interessato a datetime
. Mi stavo chiedendo degli oggetti in generale.
"Mi chiedevo di oggetti in generale." Che cosa? Mostra un esempio generale di una classe generale che generalmente ha aggiunto degli attributi. Che cosa significa la tua modifica? –
Significa che ero curioso di tutte le classi, non solo di datetime. Ho postato questa domanda perché ho visto che ad alcune classi potevo aggiungere attributi, mentre ad altri non potevo. – Geo
@Geo: alcune classi sono diverse: non esiste una regola "generale". Come nota la tua domanda: alcune classi possono e alcune classi non possono. Dal momento che la tua domanda mostra che non esiste una regola generale, cosa stai chiedendo? –