Wydaje się, że oznaczają to samo. Ale który termin jest bardziej odpowiedni w jakim kontekście?
Wydaje się, że oznaczają to samo. Ale który termin jest bardziej odpowiedni w jakim kontekście?
Odpowiedzi:
Ogólnie (iw normalnym języku angielskim) terminy oznaczają to samo.
W specyficznym kontekście HTML / JavaScript terminy są niejasne, ponieważ reprezentacja HTML elementu DOM ma atrybuty (to jest termin używany w XML dla par klucz / wartość zawartych w tagu), ale gdy jest reprezentowany jako obiekt JavaScript te atrybuty pojawiają się jako właściwości obiektu .
Aby jeszcze bardziej zmylić rzeczy, zmiany właściwości zazwyczaj powodują aktualizację atrybutów.
Na przykład zmiana element.href
właściwości spowoduje zaktualizowanie href
atrybutu w elemencie, co zostanie odzwierciedlone w wywołaniu funkcji element.getAttribute('href')
.
Jeśli jednak później przeczytasz tę właściwość, zostanie ona znormalizowana do bezwzględnego adresu URL, nawet jeśli atrybut może być względnym adresem URL!
python
. Czy mogę użyć terminu class attribute
i instance property
?
Te słowa istniały na długo przed pojawieniem się informatyki.
Atrybut to jakość lub przedmiot, który przypisujemy komuś lub czemuś. Na przykład berło jest atrybutem władzy i państwowości.
Własność to jakość, która istnieje bez przypisania . Na przykład glina ma właściwości klejące; lub jedną z właściwości metali jest przewodnictwo elektryczne. Własności przejawiają się poprzez zjawiska fizyczne bez potrzeby przypisywania ich komuś lub czemuś. Z tego samego powodu powiedzenie, że ktoś ma męskie cechy, jest oczywiste. W efekcie można powiedzieć, że nieruchomość jest własnością kogoś lub czegoś.
Szczerze mówiąc, w informatyce te dwa słowa, przynajmniej w większości, mogą być używane zamiennie - ale z drugiej strony programiści zwykle nie mają dyplomów z literatury angielskiej i nie piszą ani nie przejmują się zbytnio książkami do gramatyki :).
Często atrybut jest używany do opisania mechanizmu lub rzeczy ze świata rzeczywistego.
Właściwość służy do opisania modelu.
Na przykład dokument (leżący na biurku) może mieć atrybut, że jest wersją roboczą.
Klasa, która modeluje dokumenty, ma właściwość wskazującą, czy jest to wersja robocza. W tym przypadku własność przejmuje stan.
Atrybut to rzeczywisty element używany w tagu HTML, na przykład
<input type="checkbox" checked="checked" />
W tym przypadku typ i zaznaczone są atrybutami. Właściwość jest jednak wartością tych atrybutów, które przeglądarka zapisuje wewnątrz elementu DOM. Często wartości atrybutów i właściwości są równe, dlatego jest to tak zagmatwane.
W tym przykładzie element DOM input
ma właściwość type
z wartością "checkbox"
i właściwość checked
z wartością true
(zwróć uwagę, jak ta wartość różni się od wartości wewnątrz atrybutu HTML).
Za pomocą Firebuga możesz obserwować zachowanie właściwości po kliknięciu elementu i wybraniu „widoku DOM”.
Dokładne znaczenie tych terminów będzie w dużej mierze zależało od języka / systemu / wszechświata, o którym mówisz.
W HTML / XML atrybut jest częścią tagu ze znakiem równości i wartością, a własność na przykład nic nie znaczy.
Dlatego potrzebujemy więcej informacji na temat domeny, o której rozmawiasz.
W Pythonie ...
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 )
Właściwość to pojedyncza nazwa podobna do atrybutu, która otacza zbiór funkcji ustawiających, pobierających (i usuwających).
Atrybut jest zwykle pojedynczym obiektem w innym obiekcie.
Powiedziawszy to jednak, Python udostępnia metody, __getattr__
które pozwalają rozszerzyć definicję „atrybutu”.
Bottom Line - są prawie synonimami. Python wprowadza techniczne rozróżnienie w sposobie ich implementacji.
W Javie (lub innych językach) użycie właściwości / atrybutu zależy od zastosowania:
Właściwość używana, gdy wartość nie zmienia się zbyt często (zwykle używana podczas uruchamiania lub dla zmiennej środowiskowej)
Atrybuty to wartość (obiekt potomny) elementu (obiektu), która może zmieniać się bardzo często / cały czas i być trwała lub nie
Jaka jest różnica między atrybutem a właściwością?
Jaka jest różnica między funkcją a funkcją? Jaka jest różnica między Characteristic i Character? Jaka jest różnica między Act a Behaviour?
To tylko zmiana kontekstu.
Przedmiot, produkt, osobowość, osoba
Osoba zachowuje się w sposób. Osobowość ma cechy danej postaci. Produkt posiada Cechę, która wywodzi Funkcjonalność. Obiekt miał atrybuty, które nadają mu właściwości.
<property attribute="attributeValue">proopertyValue</property>
byłby jednym ze sposobów spojrzenia na to.
W C #
[Attribute]
public class Entity
{
private int Property{get; set;};
Delphi wykorzystało właściwości i trafiło do .NET (ponieważ ma tego samego architekta).
W Delphi są one często używane w połączeniu z informacjami o typie środowiska uruchomieniowego, tak że zintegrowany edytor właściwości może być używany do ustawiania właściwości w czasie projektowania.
Właściwości nie zawsze są powiązane z polami. Mogą to być funkcje, które mogą mieć skutki uboczne (ale oczywiście jest to bardzo zły projekt).