Pergunta

Eu tenho esse código:

>>> class G:
...   def __init__(self):
...     self.x = 20
...
>>> gg = G()
>>> gg.x
20
>>> gg.y = 2000

E este código:

>>> from datetime import datetime
>>> my_obj = datetime.now()
>>> my_obj.interesting = 1
*** AttributeError: 'datetime.datetime' object has no attribute 'interesting'

Do meu conhecimento Python, eu diria que datetime substituições setattr / getattr, mas eu não tenho certeza. você poderia lançar alguma luz aqui?

EDIT: Eu não estou interessado especificamente na datetime. Eu estava pensando sobre objetos em geral.

Foi útil?

Solução

Meu palpite é que a implementação de data e hora usos __slots__ para um melhor desempenho .

Ao usar __slots__, o armazenamento de reservas de intérprete para apenas os atributos listados, nada mais. Isso dá um melhor desempenho e usa menos armazenamento, mas também significa que você não pode adicionar novos atributos à vontade.

Leia mais aqui: http://docs.python.org/reference/datamodel.html

Outras dicas

Enquanto a questão já foi respondida; Se alguém estiver interessado em uma solução, aqui está um exemplo -

mydate = datetime.date(2013, 3, 26)
mydate.special = 'Some special date annotation'  # doesn't work
...
class CustomDate(datetime.date):
    pass
mydate = datetime.date(2013, 3, 26)
mydate = CustomDate(mydate.year, mydate.month, mydate.day)
mydate.special = 'Some special date annotation'  # works
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top