Quelle est la différence entre attribut et propriété? [fermé]

162

Cela semble vouloir dire la même chose. Mais quel terme est le plus approprié dans quel contexte?

caustique
la source
4
Pouvez-vous être plus précis sur le contexte? Par exemple, les termes signifient des choses totalement différentes dans un contexte C #.
David Arno
1
@David Arno - Différentes syntaxes linguistiques se sont appropriées un ou les deux mots, mais indépendamment de la syntaxe d'une langue particulière, y a-t-il une différence dans le sens? Ce n'est pas une mauvaise question.
Corey Trager
4
Je pense que c'est une mauvaise question. Une vérification d'un thésaurus montrera qu'ils sont synonymes en termes de langage réel, mais différents ordinateurs et méta-langages peuvent leur attribuer des rôles très différents et ainsi ils peuvent ne pas être synonymes pour un langage informatique particulier. Le contexte est donc tout.
David Arno
9
Je suis plus ... sympathique. Je me souviens de la première fois que j'ai entendu le terme «méthode». Qu'est-ce qu'une "méthode"? Oh, c'est ce que vous appelez une fonction quand elle appartient à une classe. Pourquoi une nouvelle terminologie pour quelque chose de vieux? Thoreau a dit, "méfiez-vous de toutes les entreprises qui ont besoin de nouveaux vêtements". (ou mots ...)
Corey Trager
1
Cette question est trop large sans fournir de contexte (telle qu'elle est rédigée, on ne peut vraiment y répondre qu'avec une liste de tous les contextes possibles).
Quentin

Réponses:

199

En termes généraux (et dans l'usage normal de l'anglais), les termes signifient la même chose.

Dans le contexte spécifique de HTML / Javascript, les termes sont confus car la représentation HTML d'un élément DOM a des attributs (c'est-à-dire le terme utilisé en XML pour les paires clé / valeur contenues dans une balise) mais lorsqu'ils sont représentés comme un objet JavaScript, ces attributs apparaissent comme des propriétés d' objet .

Pour compliquer davantage les choses, les modifications apportées aux propriétés mettront généralement à jour les attributs.

Par exemple, la modification de la element.href propriété mettra à jour l' href attribut sur l'élément, et cela sera reflété dans un appel à element.getAttribute('href').

Cependant, si vous lisez ultérieurement cette propriété, elle aura été normalisée en une URL absolue, même si l' attribut peut être une URL relative!

Alnitak
la source
14
Cela devrait être la réponse acceptée!
Rubens Mariuzzo le
3
@RubensMariuzzo, aussi précis soit-il, il n'y a pas de réponse ici .. il élabore simplement sur un possible point de confusion pour les gens, étant donné un contexte.
Brett Caswell
@BrettCaswell, je pense que dans un contexte DOM (HTML / JS) cette réponse m'explique clairement et simplement la différence.
Rubens Mariuzzo
1
@Alnitak Réponse claire et nette. J'en ai fait un du siècle pour vous.
mkHun
Je viens de python. Puis-je utiliser le terme class attributeet instance property?
Sarit
71

Ces mots existaient bien avant l'arrivée de l'informatique.

  1. L'attribut est une qualité ou un objet que nous attribuons à quelqu'un ou à quelque chose. Par exemple, le sceptre est un attribut du pouvoir et de l'état.

  2. La propriété est une qualité qui existe sans aucune attribution . Par exemple, l'argile a des qualités adhésives; ou l'une des propriétés des métaux est la conductivité électrique. Les propriétés se manifestent par des phénomènes physiques sans qu'il soit nécessaire de les attribuer à quelqu'un ou à quelque chose. De même, dire que quelqu'un a des attributs masculins va de soi. En fait, on pourrait dire qu'une propriété appartient à quelqu'un ou à quelque chose.

Pour être juste cependant, en informatique, ces deux mots, du moins pour la plupart, peuvent être utilisés de manière interchangeable - mais là encore, les programmeurs ne détiennent généralement pas de diplômes en littérature anglaise et n'écrivent pas ou ne se soucient pas beaucoup des livres de grammaire :).

George
la source
1
Vous êtes plus proche du sens tel que je le comprends. Un attribut est un descripteur de type, il décrit l'objet à quelque chose hors contexte (comme un interpètre) .. c'est-à-dire qu'il y a un contexte, mais ce contexte peut très bien être interchangeable. Pour utiliser HTML par exemple, l'objectif entier de width ne contient aucune fonction si vous analysez le document sans aucune intention de l'afficher / le rendre sur une page.
Brett Caswell
Je vous remercie! Je suis venu ici pour savoir quand utiliser quel terme pour nommer. Je me fiche même (beaucoup) de savoir si c'est techniquement correct ou non, c'est une distinction vraiment utile.
user1433150
1
C'est aussi le type de réponse que je recherchais. Pourquoi le contexte ou ce qu'un développeur de langage particulier a décidé est important. Ils peuvent avoir pris une décision arbitraire ou sans instruction. Je veux en faire un éduqué et cela me donne des raisons concrètes de choisir l'un plutôt que l'autre. Il peut également clarifier pourquoi un exécutant particulier a fait son choix.
bielawski
2
Ce qui fonctionne pour moi, c'est de considérer les propriétés comme objectives et les attributs comme relatifs / subjectifs. Des caractéristiques telles que la couleur, la forme, le score, la vitesse du vent, la température (98 ° F) et d'autres faits objectifs ou mesurables font de bonnes propriétés. Des caractéristiques comme la texture ("douce"), les conditions ("venteux"), la température ("chaude") et d'autres déclarations qui ne sont pas indéniablement vraies font de meilleurs attributs.
Ivan le
20

Souvent, un attribut est utilisé pour décrire le mécanisme ou la chose du monde réel.

Une propriété est utilisée pour décrire le modèle.

Par exemple, un document (posé sur votre bureau) peut avoir l'attribut qu'il s'agit d'un brouillon.

La classe qui modélise les documents a une propriété pour indiquer s'il s'agit ou non d'un brouillon. Dans ce cas, la propriété capture l'état.

Walt Stoneburner
la source
1
Cela signifie-t-il que la propriété d'une instance est un attribut?
Abdurrahim
Intrigant, mais je ne le crois pas. Étant donné un document, une instance d'un attribut peut être un morceau de papier; une instance de la propriété de représentation du modèle pourrait être un tampon suffisamment grand pour le contenu dudit article.
Walt Stoneburner
17

Un attribut est l'élément réel que vous utilisez dans votre balise HTML, comme

<input type="checkbox" checked="checked" />

Dans ce type d'instance et coché sont les attributs. La propriété est cependant la valeur de ces attributs, que le navigateur enregistre dans l'élément DOM. Souvent, la valeur des attributs et les propriétés sont égales, c'est ce qui rend les choses si déroutantes.

Dans cet exemple, l'élément DOM inputa la propriété typeavec la valeur "checkbox"et la propriété checkedavec la valeur true(notez comment cette valeur diffère de la valeur à l'intérieur de l'attribut HTML).

En utilisant Firebug, vous pouvez observer le comportement des propriétés en cliquant sur un élément et en sélectionnant la "vue DOM".

smonusbonus
la source
Cela pourrait être la réponse acceptée. Il est à la fois clair en théorie et utile en contexte.
Jaune
15

La signification précise de ces termes dépendra beaucoup de la langue / du système / de l'univers dont vous parlez.

En HTML / XML, un attribut est la partie d'une balise avec un signe égal et une valeur, et la propriété ne veut rien dire, par exemple.

Nous avons donc besoin de plus d'informations sur le domaine dont vous parlez.

Ned Batchelder
la source
7
Ce n'est pas correct. Voir la réponse d'Alnitak.
kba
6

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 )

Une propriété est un nom de type attribut unique qui enveloppe une collection de fonctions setter, getter (et deleter).

Un attribut est généralement un objet unique dans un autre objet.

Cela dit, cependant, Python vous donne des méthodes comme celles __getattr__qui vous permettent d'étendre la définition d '"attribut".

Bottom Line - ils sont presque synonymes. Python fait une distinction technique dans la façon dont ils sont implémentés.

S.Lott
la source
2

En Java (ou dans d'autres langages), l'utilisation de Propriété / Attribut dépend de l'utilisation:

  • Propriété utilisée lorsque la valeur ne change pas très souvent (généralement utilisée au démarrage ou pour la variable d'environnement)

  • Attributes est une valeur (objet enfant) d'un élément (objet) qui peut changer très souvent / tout le temps et être ou non persistante

Eric
la source
2

En HTML, il semble que les attributs sont spécifiques à l'arborescence DOM tandis que les propriétés sont utilisées pour décrire les caractéristiques des éléments DOM

goonerify
la source
2

Quelle est la différence entre l'attribut et la propriété?
Quelle est la différence entre Feature et Function? Quelle est la différence entre caractéristique et caractère? Quelle est la différence entre Act et Behavior?

C'est juste un changement de contexte.

Objet, produit, personnalité, personne

Une personne agit dans un comportement. Une personnalité a des caractéristiques d'un caractère donné. Un produit a des fonctionnalités qui dérivent des fonctionnalités. Un objet a des attributs qui lui donnent des propriétés.

Générique
la source
C'est en fait une bonne réponse.
anonym
1
<property attribute="attributeValue">proopertyValue</property>

serait une façon de voir les choses.

En C #

[Attribute]
public class Entity
{
    private int Property{get; set;};
Colombe
la source
8
Désolé de voter contre, mais en XML, ce que vous avez appelé une propriété est en fait un "élément"
Harald Scheirich
@HaraldScheirich une réponse lente;) mais l'élément est en effet appelé "propriété" pour clarifier le lien avec l'Entity.Property. Il n'est pas habituel que les éléments xml soient réellement appelés «élément»
colombe
1

Delphi a utilisé des propriétés et elles ont trouvé leur chemin dans .NET (car il a le même architecte).

Dans Delphi, ils sont souvent utilisés en combinaison avec des informations de type d'exécution, de sorte que l'éditeur de propriétés intégré peut être utilisé pour définir la propriété au moment de la conception.

Les propriétés ne sont pas toujours liées aux champs. Il peut s'agir de fonctions susceptibles d'avoir des effets secondaires (mais bien sûr, c'est une très mauvaise conception).

Toon Krijthe
la source
Pas nécessairement. La vérification automatique automatisée d'un objet persistant serait un exemple de propriété avec des effets secondaires qui ne seraient pas une mauvaise conception.
Quibblesome