Estos parecen significar lo mismo. Pero, ¿qué término es más apropiado en qué contexto?
Estos parecen significar lo mismo. Pero, ¿qué término es más apropiado en qué contexto?
Respuestas:
En términos generales (y en el uso normal del 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 (que 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 de objeto .
Para confundir aún más las cosas, los cambios en las propiedades generalmente actualizarán los atributos.
Por ejemplo, cambiar la element.href
propiedad actualizará el href
atributo 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 podría ser una URL relativa!
python
. ¿Puedo usar el término class attribute
y instance property
?
Estas palabras existieron mucho antes de que apareciera la informática.
El atributo es una cualidad u objeto que atribuimos a alguien o algo. Por ejemplo, el cetro es un atributo de poder y estado.
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 través de fenómenos físicos sin la necesidad de atribuirlas a alguien o algo. Del mismo modo, decir que alguien tiene atributos masculinos es evidente. En efecto, se podría decir que una propiedad es propiedad de alguien o algo.
Sin embargo, para ser justos, en Ciencias de la Computación estas dos palabras, al menos en su mayor parte, se pueden usar indistintamente, pero nuevamente los programadores generalmente no tienen títulos en Literatura Inglesa y no escriben ni se preocupan mucho por los libros de gramática :).
A menudo se usa un atributo para describir el mecanismo o la cosa del mundo real.
Se usa una propiedad 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 es o no un borrador. En este caso, la propiedad captura el estado.
Un atributo es lo que usa dentro de su etiqueta HTML como
<input type="checkbox" checked="checked" />
En este caso, tipo y marcado son atributos. Sin embargo, 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, el elemento DOM input
tiene la propiedad type
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 puede observar el comportamiento de las propiedades al hacer clic en un elemento y seleccionar la "vista DOM".
El significado preciso de estos términos dependerá mucho del idioma / sistema / universo del que 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.
Por lo tanto, necesitamos más información sobre qué dominio está discutiendo.
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 de tipo atributo que envuelve una colección de funciones setter, getter (y deleter).
Un atributo es generalmente un solo objeto dentro de otro objeto.
Dicho esto, sin embargo, Python le ofrece métodos como los __getattr__
que le permiten ampliar la definición de "atributo".
En pocas palabras, son casi sinónimos. Python hace una distinción técnica en cómo se implementan.
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 una variable de entorno)
Los atributos son un valor (objeto hijo) de un Elemento (objeto) que puede cambiar muy a menudo / todo el tiempo y ser o no persistente
¿Cuál es la diferencia entre Attribute y Property?
¿Cuál es la diferencia entre Feature y Function? ¿Cuál es la diferencia entre Characteristic y Character? ¿Cuál es la diferencia entre Act y Behavior?
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 otorgan propiedades.
<property attribute="attributeValue">proopertyValue</property>
sería una forma de verlo.
C ª#
[Attribute]
public class Entity
{
private int Property{get; set;};
Delphi usó propiedades y han encontrado su camino en .NET (porque tiene el mismo arquitecto).
En Delphi, a menudo se usan en combinación con información de tipo de tiempo de ejecución, de modo que el editor de propiedades integrado se puede usar para establecer la propiedad en tiempo de diseño.
Las propiedades no siempre están relacionadas con los campos. Pueden ser funciones que posiblemente tengan efectos secundarios (pero, por supuesto, es un diseño muy malo).