Sé que no puede llamar al object.__setattr__
en objetos no heredados de object
, pero ¿hay algo más que sea diferente entre los dos? Estoy trabajando en Python 2.6, si esto es importante.¿Cuál es la diferencia entre setattr() y el objeto .__ setattr __()?
Respuesta
setattr(instance, name, value)
es azúcar sintáctica para instance.__setattr__(name, value)
.
Usted sólo tiene que llamar object.__setattr__(...)
dentro de una definición de clase, y sólo si la subclasificación directamente object
- si estuviera algo más de subclases, Spam
por ejemplo, entonces debes usar super()
para obtener el siguiente elemento de la jerarquía , o llame al Spam.__setattr__(...)
- de esta manera no se arriesga a perder el comportamiento que las súper-clases han definido salteándolas directamente al object
.
Gracias, eso lo explica. El código probablemente esté usando 'object .__ setattr__' para el propósito exacto de omitir __setattr__ de la superclase. –
_ "setattr (instancia, nombre, valor) es azúcar sintáctica, por ejemplo .__ setattr __ (nombre, valor)" _ - ¿es realmente? Recuerdo vagamente que algunos tipos no tienen '__getattr__', pero obtener atributos funciona independientemente de ellos. ¿No es lo mismo aquí? –
- 1. Ruby equivalente de Python setattr()
- 2. objetos anidados y setattr y getattr (sí, es esa época)
- 3. Python __init__ setattr en argumentos?
- 4. setattr con kwargs, pitónico o no?
- 5. ¿Cómo llamo a setattr() en el módulo actual?
- 6. ¿Cuál es la diferencia entre una matriz y un objeto?
- 7. ¿Cuál es la diferencia entre una instancia y un objeto?
- 8. Python: ¿Cuál es la diferencia entre __builtin__ y __builtins__?
- 9. Diferencia entre el objeto y el objeto
- 10. Cuál es la diferencia entre $ y jQuery
- 11. cuál es la diferencia entre el objeto _EPROCESS y el objeto _KPROCESS
- 12. ¿Cuál es la diferencia entre el Javascript objeto y el objeto JSON
- 13. ¿cuál es la diferencia entre:.! y: r !?
- 14. ¿Cuál es la diferencia entre .ToString (+) y ""
- 15. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 16. ¿Cuál es la diferencia entre dict() y {}?
- 17. Cuál es la diferencia entre $ (...) y `...`
- 18. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 19. ¿Cuál es la diferencia entre {0} y ""?
- 20. Cuál es la diferencia entre = y: =
- 21. ¿Cuál es la diferencia entre ".equals" y "=="?
- 22. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 23. ¿Cuál es la diferencia entre + = y = +?
- 24. ¿Cuál es la diferencia entre " " y ""?
- 25. ¿Cuál es la diferencia entre el formato OMF y COFF?
- 26. Diferencia entre objeto y *?
- 27. ¿Cuál es la diferencia entre el NSImage y el UIImage?
- 28. ¿Cuál es la diferencia entre el tenedor y el hilo?
- 29. ¿cuál es la diferencia entre el objetivo y el proyecto?
- 30. Backbone.Js - ¿Cuál es la diferencia entre el y $ el?
'setattr' es algo que llama en otro objeto,' __setattr __() 'es algo que implementa en su propio objeto. –
'setattr (obj, attr, value)' solo llama a 'obj .__ setattr __ (attr, value)', al menos para las clases de estilo nuevo. – agf