(napisany w Pythonie shell)Dlaczego nie możesz dodać atrybutów do obiektu w pythonie?
>>> o = object()
>>> o.test = 1
Traceback (most recent call last):
File "<pyshell#45>", line 1, in <module>
o.test = 1
AttributeError: 'object' object has no attribute 'test'
>>> class test1:
pass
>>> t = test1()
>>> t.test
Traceback (most recent call last):
File "<pyshell#50>", line 1, in <module>
t.test
AttributeError: test1 instance has no attribute 'test'
>>> t.test = 1
>>> t.test
1
>>> class test2(object):
pass
>>> t = test2()
>>> t.test = 1
>>> t.test
1
>>>
Dlaczego nie sprzeciwia pozwalają na dodawanie atrybutów do niego?
Tak więc mówisz, że klasa * object * używa \ _ \ _ slotów \ _ \ _ w taki czy inny sposób, aby zapobiec przypisaniu członków instancji. Czy jest to założenie, czy fakt (tzn. Czy jest to implementacja * obiektu *)? Ponieważ sam brak \ _ \ dict \ _ \ _ z instancji * object * nie jest orientacyjny. Instancje klasy OP * test1 * pokazują ten sam brakujący \ _ \ _ dict \ _ \ _ po wywołaniu z dir(), ale mimo to zezwól na przydział członków instancji. – ThomasH
@ThomasH, zobacz notatkę dodaną do odpowiedzi. – ars