185 votes

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

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

4 votes

Pouvez-vous être plus précis sur le contexte ? Par exemple, les termes ont une signification complètement différente dans un contexte C#.

1 votes

@David Arno - les syntaxes des différentes langues 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 de sens ? Ce n'est pas une mauvaise question.

4 votes

Je pense que c'est une mauvaise question. Une vérification dans un thésaurus montrera qu'ils sont synonymes en termes de langage réel, mais différents langages informatiques et méta-langages peuvent leur attribuer des rôles tout à fait différents et donc ils peuvent ne pas être synonymes pour un langage informatique particulier. Le contexte est donc essentiel.

215voto

Alnitak Points 143355

En général (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 se confondent parce que la représentation HTML d'un élément DOM a attributs (c'est le terme utilisé dans le XML pour les paires clé/valeur contenues dans une balise) mais lorsqu'ils sont représentés sous forme d'objet JavaScript, ces attributs apparaissent comme des objets propriétés .

Pour rendre les choses encore plus confuses, les modifications apportées aux propriétés mettent généralement à jour les attributs.

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

Toutefois, si par la suite vous lire cette propriété, elle aura été normalisée à une URL absolue, même si le attribut pourrait être une URL relative !

18 votes

Cela devrait être la réponse acceptée !

4 votes

@RubensMariuzzo, aussi précis que cela puisse être, il n'y a pas de réponse ici il s'agit juste d'élaborer sur un point de confusion possible pour les gens, étant donné un contexte.

0 votes

@BrettCaswell, je pense que dans un contexte DOM (HTML/JS) cette réponse explique la différence clairement et simplement pour moi.

91voto

George Points 21

Ces mots existaient bien avant l'apparition de l'informatique.

  1. Un attribut est une qualité ou un objet qui nous attribuons à quelqu'un ou à quelque chose. Par exemple, le sceptre est un attribut du pouvoir et du statut d'État.

  2. La propriété est une qualité qui existe sans aucune attribution . Par exemple, l'argile a des qualités adhésives ; c'est-à-dire qu'une des propriétés de l'argile est sa qualité adhésive. Autre exemple : 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 est une évidence. En fait, on pourrait dire qu'une propriété appartient à quelqu'un ou à quelque chose.

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

1 votes

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 interprète) c'est-à-dire qu'il y a un contexte, mais ce contexte peut très bien être interchangeable. Pour utiliser le HTML par exemple, l'objectif entier de la largeur n'a aucune fonction si vous analysez le document sans avoir l'intention de l'afficher/le rendre sur une page.

0 votes

Merci. Je suis venu ici à la recherche de conseils pour savoir quand utiliser tel ou tel terme pour nommer. Je ne me soucie même pas (beaucoup) de savoir si c'est techniquement correct ou non, c'est une distinction vraiment utile.

1 votes

C'est le type de réponse que je cherchais aussi. Pourquoi le contexte ou ce qu'un implémenteur de langage particulier a décidé importe-t-il ? Ils peuvent avoir pris une décision arbitraire ou non éduquée. Je veux prendre une décision éclairée et cela me donne des raisons concrètes de choisir l'un plutôt que l'autre. Cela peut également clarifier les raisons pour lesquelles un implémenteur particulier a fait son choix.

21voto

Walt Stoneburner Points 1112

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

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

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

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

1 votes

Cela signifie-t-il que la propriété d'une instance est un attribut ?

0 votes

Intrigant, mais je ne le crois pas. Dans un document, une instance d'un attribut peut être un morceau de papier ; une instance de la propriété représentative du modèle peut être un tampon suffisamment grand pour contenir le contenu dudit papier.

15voto

Ned Batchelder Points 128913

La signification précise de ces termes va dépendre en grande partie de la langue/du système/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 signifie rien, par exemple.

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

7 votes

Ce n'est pas correct. Voir la réponse d'Alnitak.

6voto

S.Lott Points 207588

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 unique de type attribut qui englobe un ensemble de fonctions setter, getter (et deleter).

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

Cela dit, Python vous offre des méthodes telles que __getattr__ qui permettent d'étendre la définition d'un "attribut".

En résumé, ils sont presque synonymes. Python fait une distinction technique dans la façon dont ils sont implémentés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X