Questi sembrano significare la stessa cosa. Ma quale termine è più appropriato in quale contesto?
Questi sembrano significare la stessa cosa. Ma quale termine è più appropriato in quale contesto?
Risposte:
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!
python
. Posso usare il termine class attribute
e instance property
?
Queste parole esistevano molto prima che arrivasse l'Informatica.
L'attributo è una qualità o un oggetto che attribuiamo a qualcuno o qualcosa. Ad esempio, lo scettro è un attributo di potere e statualità.
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 :).
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.
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 input
ha la proprietà type
con il valore "checkbox"
e la proprietà checked
con 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".
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.
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.
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
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à.
<property attribute="attributeValue">proopertyValue</property>
sarebbe un modo per vederlo.
In C #
[Attribute]
public class Entity
{
private int Property{get; set;};
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).