¿Cuál es la diferencia entre atributo y propiedad?

Estos parecen significar lo mismo. Pero, ¿qué término es más apropiado en qué contexto?

En términos generales (y en el uso normal de inglés) los términos significan lo mismo.

En el contexto específico de HTML / Javascript los términos se confunden porque la representación HTML de un elemento DOM tiene atributos (ese es el término utilizado en XML para los pares clave / valor contenidos en una etiqueta) pero cuando se representa como un objeto JavaScript esos atributos aparecen como propiedades del objeto.

Para confundir aún más las cosas, los cambios en las propiedades generalmente actualizarán los atributos.

Por ejemplo, al cambiar la propiedad element.href se actualizará el atributo href en el elemento, y eso se reflejará en una llamada a element.getAttribute('href') .

Sin embargo, si posteriormente lee esa propiedad, se habrá normalizado a una URL absoluta, ¡aunque el atributo sea ​​una URL relativa!

Estas palabras existieron mucho antes de que surgiera la Informática.

  1. El atributo es una cualidad u objeto que atribuimos a alguien o algo. Por ejemplo, el cetro es un atributo de poder y estadidad.

  2. La propiedad es una cualidad que existe sin ninguna atribución . Por ejemplo, la arcilla tiene cualidades adhesivas; o, una de las propiedades de los metales es la conductividad eléctrica. Las propiedades se demuestran a sí mismas a través de fenómenos físicos sin la necesidad de atribuírselas a alguien o algo. Por la misma razón, decir que alguien tiene atributos masculinos es evidente. En efecto, podría decir que una propiedad es propiedad de alguien o algo.

Para ser justos, en Computer Science estas dos palabras, al menos en su mayor parte, pueden usarse indistintamente, pero de nuevo los progtwigdores generalmente no tienen títulos en Literatura Inglesa y no escriben ni se preocupan demasiado por los libros de gramática :).

A menudo, un atributo se utiliza para describir el mecanismo o lo del mundo real.

Una propiedad se usa para describir el modelo.

Por ejemplo, un documento (sentado en su escritorio) puede tener el atributo de que es un borrador.

La clase que modela documentos tiene una propiedad para indicar si se trata o no de un borrador. En este caso, la propiedad captura el estado.

El significado preciso de estos términos dependerá mucho del idioma / sistema / universo del que se está hablando.

En HTML / XML, un atributo es la parte de una etiqueta con un signo igual y un valor, y la propiedad no significa nada, por ejemplo.

Entonces, necesitamos más información sobre el dominio que está discutiendo.

Un atributo es la cosa real que usa dentro de su etiqueta HTML como

  

En este caso, type y checked son atributos. La propiedad es el valor de estos atributos, que el navegador guarda dentro del elemento DOM. A menudo, el valor de los atributos y las propiedades son iguales, eso es lo que lo hace tan confuso.

En este ejemplo, la input elemento DOM tiene el type propiedad con el valor "checkbox" y la propiedad checked con el valor true (observe cómo este valor difiere del valor dentro del atributo HTML).

Usando Firebug puedes observar el comportamiento de las propiedades al hacer clic en un elemento y seleccionar la “vista de DOM”.

En Python …

 class X( object ): def __init__( self ): self.attribute def getAttr( self ): return self.attribute def setAttr( self, value ): self.attribute= value property_name= property( getAttr, setAttr ) 

Una propiedad es un nombre único similar a un atributo que envuelve una colección de funciones setter, getter (y deleteter).

Un atributo suele ser un único objeto dentro de otro objeto.

Una vez dicho esto, sin embargo, Python te da métodos como __getattr__ que te permiten extender la definición de “atributo”.

En resumen, son casi sinónimos. Python hace una distinción técnica en cómo se implementan.

 proopertyValue 

sería una forma de verlo.

Cª#

 [Attribute] public class Entity { private int Property{get; set;}; 

En Java (u otros idiomas), el uso de Propiedad / Atributo depende del uso:

  • Propiedad utilizada cuando el valor no cambia muy a menudo (generalmente se usa al inicio o para la variable de entorno)

  • Atributos es un valor (objeto secundario) de un Elemento (objeto) que puede cambiar muy a menudo / todo el tiempo y ser o no persistente

En HTML, parece que los atributos son específicos del árbol DOM, mientras que las propiedades se usan para describir las características de los elementos DOM

Delphi usó propiedades y encontraron su camino en .NET (porque tiene el mismo arquitecto).

En Delphi, a menudo se usan en combinación con información del tipo de tiempo de ejecución, de modo que el editor de propiedades integrado se puede usar para establecer la propiedad en designtime.

Las propiedades no siempre están relacionadas con los campos. Pueden ser funciones que pueden tener efectos secundarios (pero, por supuesto, es un diseño muy malo).

¿Cuál es la diferencia entre Atributo y Propiedad?
¿Cuál es la diferencia entre Función y Función? ¿Cuál es la diferencia entre Característica y Carácter? ¿Cuál es la diferencia entre Act y Comportamiento?

Es solo un cambio de contexto.

Objeto, Producto, Personalidad, Persona

Una persona actúa en un comportamiento. Una personalidad tiene características de un personaje dado. Un producto tiene una característica que deriva la funcionalidad. Un objeto tenía atributos que le dan propiedades.