Qual è la differenza tra attributo e proprietà? [chiuso]


162

Questi sembrano significare la stessa cosa. Ma quale termine è più appropriato in quale contesto?


4
Puoi essere più specifico sul contesto? Ad esempio, i termini significano cose completamente diverse in un contesto C #.
David Arno,

1
@David Arno - diverse sintassi linguistiche hanno appropriato una o entrambe le parole ma indipendentemente dalla sintassi di una determinata lingua, c'è una differenza nel significato? Non è una cattiva domanda.
Corey Trager,

4
Penso che sia una cattiva domanda. Un controllo di un thesaurus mostrerà che sono sinonimi in termini di linguaggio reale, ma computer e meta lingue diverse possono assegnare loro ruoli abbastanza diversi e quindi potrebbero non essere sinonimi di un particolare linguaggio di computer. Quindi il contesto è tutto.
David Arno,

9
Sono più .... comprensivo. Ricordo la prima volta che ho sentito il termine "metodo". Che diamine è un "metodo"? Oh, è quella che chiami una funzione quando appartiene a una classe. Perché una nuova terminologia per qualcosa di vecchio? Thoreau ha detto, "attenti a tutte le imprese che richiedono nuovi vestiti". (o parole ...)
Corey Trager,

1
Questa domanda è troppo ampia senza fornire un certo contesto (poiché scritta può davvero rispondere solo con un elenco di tutti i possibili contesti).
Quentin,

Risposte:


199

In termini generali (e nell'uso normale dell'inglese) i termini significano la stessa cosa.

Nel contesto specifico di HTML / Javascript i termini si confondono perché la rappresentazione HTML di un elemento DOM ha attributi (che è il termine usato in XML per le coppie chiave / valore contenute in un tag) ma quando sono rappresentati come oggetto JavaScript quegli attributi appare come proprietà dell'oggetto .

Per confondere ulteriormente le cose, le modifiche alle proprietà in genere aggiornano gli attributi.

Ad esempio, la modifica della element.href proprietà aggiornerà l' href attributo sull'elemento e ciò si rifletterà in una chiamata a element.getAttribute('href').

Tuttavia, se successivamente leggi quella proprietà, sarà stata normalizzata in un URL assoluto, anche se l' attributo potrebbe essere un URL relativo!


14
Questa dovrebbe essere la risposta accettata!
Rubens Mariuzzo,

3
@RubensMariuzzo, per quanto accurato possa essere, non c'è risposta qui .. elabora solo un possibile punto di confusione per le persone, dato un contesto.
Brett Caswell,

@BrettCaswell, penso in un contesto DOM (HTML / JS) questa risposta mi spiega chiaramente e semplicemente la differenza.
Rubens Mariuzzo,

1
@Alnitak Risposta chiara. Ne ho fatto uno del secolo per te.
mkHun

Io vengo python. Posso usare il termine class attributee instance property?
Sarit,

71

Queste parole esistevano molto prima che arrivasse l'Informatica.

  1. L'attributo è una qualità o un oggetto che attribuiamo a qualcuno o qualcosa. Ad esempio, lo scettro è un attributo di potere e statualità.

  2. La proprietà è una qualità che esiste senza alcuna attribuzione . Ad esempio, l'argilla ha qualità adesive; oppure, una delle proprietà dei metalli è la conducibilità elettrica. Le proprietà si dimostrano attraverso fenomeni fisici senza la necessità di attribuirle a qualcuno o qualcosa. Allo stesso modo, affermare che qualcuno ha attributi maschili è evidente. In effetti, si potrebbe dire che una proprietà è di proprietà di qualcuno o qualcosa.

Ad essere onesti però, in Informatica queste due parole, almeno per la maggior parte, possono essere usate in modo intercambiabile - ma poi di nuovo i programmatori di solito non hanno una laurea in Letteratura inglese e non scrivono né si preoccupano molto dei libri di grammatica :).


1
Sei più vicino al significato come capisco che sia. Un attributo è un Type Describer, descrive l'oggetto in qualcosa di fuori contesto (come un interpeter) .. cioè c'è un contesto, ma quel contesto può benissimo essere intercambiabile. Ad esempio, per utilizzare HTML, l'intero scopo di width non ha alcuna funzione se si analizza il documento senza alcuna intenzione di visualizzarlo / renderizzarlo in una pagina.
Brett Caswell,

Grazie! Sono venuto qui in cerca di una guida su quando usare quale termine per nominare. Non mi interessa nemmeno (molto) se questo è tecnicamente giusto o no, è una distinzione davvero utile.
user1433150

1
Questo è anche il tipo di risposta che stavo cercando. Perché è importante il contesto o ciò che un determinato implementatore di lingue ha deciso. Potrebbero aver preso una decisione arbitraria o non istruita. Voglio realizzarne uno istruito e questo mi dà ragioni concrete per sceglierne uno sopra l'altro. Può anche chiarire il motivo per cui un particolare attuatore ha fatto la sua scelta.
bielawski

2
Ciò che funziona per me è considerare le proprietà come oggettive e gli attributi come relativi / soggettivi. Caratteristiche come colore, forma, punteggio, velocità del vento, temperatura (98'F) e altri fatti oggettivi o misurabili rendono buone le Proprietà. Funzionalità come texture ("soft"), condizioni ("windy"), temperatura ("hot") e altre affermazioni che non sono innegabilmente vere creano attributi migliori.
Ivan

20

Spesso un attributo viene utilizzato per descrivere il meccanismo o la cosa del mondo reale.

Una proprietà viene utilizzata per descrivere il modello.

Ad esempio, un documento (seduto sulla scrivania) può avere l'attributo che è una bozza.

La classe che modella i documenti ha una proprietà per indicare se si tratta o meno di una bozza. In questo caso la proprietà acquisisce lo stato.


1
Ciò significa che la proprietà di un'istanza è l'attributo?
Abdurrahim,

Intrigante, ma non ci credo. Dato un documento, un'istanza di un attributo potrebbe essere un pezzo di carta; un'istanza della proprietà rappresentativa del modello potrebbe essere un buffer abbastanza grande per il contenuto di detto documento.
Walt Stoneburner,

17

Un attributo è la cosa reale che usi come nel tuo tag HTML

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

In questo caso digitare e selezionare sono gli attributi. La proprietà però è il valore di questi attributi, che il browser salva all'interno dell'elemento DOM. Spesso il valore degli attributi e le proprietà sono uguali, questo è ciò che lo rende così confuso.

In questo esempio l'elemento DOM inputha la proprietà typecon il valore "checkbox"e la proprietà checkedcon il valore true(notare come questo valore differisce dal valore all'interno dell'attributo HTML).

Utilizzando Firebug è possibile osservare il comportamento delle proprietà quando si fa clic su un elemento e si seleziona la "vista DOM".


Questa potrebbe essere la risposta accettata. È sia chiaro in teoria sia utile nel contesto.
Jaune

15

Il significato preciso di questi termini dipenderà molto dalla lingua / sistema / universo di cui stai parlando.

In HTML / XML, un attributo è la parte di un tag con un segno uguale e un valore, e la proprietà non significa nulla, ad esempio.

Quindi abbiamo bisogno di maggiori informazioni su quale dominio stai discutendo.


7
Questo non è corretto Vedi la risposta di Alnitak.
kba,

6

In 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 proprietà è un singolo nome simile ad un attributo che racchiude una raccolta di funzioni setter, getter (e deleter).

Un attributo è generalmente un singolo oggetto all'interno di un altro oggetto.

Detto questo, tuttavia, Python offre metodi come quelli __getattr__che consentono di estendere la definizione di "attributo".

Bottom Line: sono quasi sinonimi. Python fa una distinzione tecnica nel modo in cui sono implementati.


2

In Java (o altre lingue), l'utilizzo di Proprietà / Attributo dipende dall'uso:

  • Proprietà utilizzata quando il valore non cambia molto spesso (di solito utilizzato all'avvio o per variabile d'ambiente)

  • Gli attributi sono un valore (oggetto figlio) di un elemento (oggetto) che può cambiare molto spesso / tutto il tempo ed essere o non persistente


2

In HTML sembra che gli attributi siano specifici dell'albero DOM mentre le proprietà sono usate per descrivere le caratteristiche degli elementi DOM


2

Qual è la differenza tra Attributo e Proprietà?
Qual'è la differenza tra Feature e Function? Qual'è la differenza tra Characteristic e Character? Qual è la differenza tra atto e comportamento?

È solo un cambiamento nel contesto.

Oggetto, prodotto, Personalità, persona

Una persona agisce in un comportamento. Una personalità ha le caratteristiche di un determinato personaggio. Un prodotto ha funzionalità che derivano funzionalità. Un oggetto aveva attributi che gli conferiscono proprietà.


Questa è in realtà una buona risposta.
anonimo

1
<property attribute="attributeValue">proopertyValue</property>

sarebbe un modo per vederlo.

In C #

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

8
Mi spiace votare questo verso il basso, ma in XML quello che hai etichettato come proprietà è in realtà un "elemento"
Harald Scheirich,

@HaraldScheirich una risposta lenta;) ma l'elemento è effettivamente chiamato "proprietà" per chiarire la connessione con Entity.Property. Non è normale che gli elementi xml vengano effettivamente chiamati "element"
dove l'

1

Delphi ha usato le proprietà e ha trovato la sua strada in .NET (perché ha lo stesso architetto).

In Delphi vengono spesso utilizzati in combinazione con informazioni sul tipo di runtime in modo che l'editor di proprietà integrato possa essere utilizzato per impostare la proprietà in fase di progettazione.

Le proprietà non sono sempre correlate ai campi. Possono essere funzioni che possono avere effetti collaterali (ma ovviamente è un pessimo design).


Non necessariamente. Il controllo sporco automatico su un oggetto persistente sarebbe un esempio di proprietà con effetti collaterali che non sarebbe un cattivo design.
Quibblesome
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.