Здається, це означає те саме. Але який термін підходить в якому контексті?
Здається, це означає те саме. Але який термін підходить в якому контексті?
Відповіді:
У загальних рисах (і в звичайній англійській мові) терміни означають те саме.
У конкретному контексті HTML / Javascript терміни плутаються через те, що представлення HTML елемента DOM має атрибути (що є терміном, що використовується в XML для пар ключів / значень, що містяться в тезі), але коли вони представлені як об'єкт JavaScript, ці атрибути відображаються як властивості об'єкта .
Щоб додатково переплутати речі, зміни властивостей зазвичай оновлюють атрибути.
Наприклад, зміна element.href
властивості оновить href
атрибут елемента, і це буде відображено у виклику до element.getAttribute('href')
.
Однак якщо згодом ви прочитаєте це властивість, воно буде нормалізовано до абсолютної URL-адреси, навіть якщо атрибут може бути відносною URL-адресою!
python
. Чи можу я використовувати термін class attribute
і instance property
?
Ці слова існували до того, як з'явилися інформатики.
Атрибут - це якість або об'єкт, який ми приписуємо комусь чи чомусь. Наприклад, скіпетр - атрибут влади і державності.
Властивість - це якість, яка існує без атрибуції . Наприклад, глина має адгезивні якості; або, однією з властивостей металів є електропровідність. Властивості демонструють себе хоча фізичними явищами без необхідності приписувати їх комусь чи чомусь. Таким же чином, сказати, що хтось має чоловічі ознаки, само собою зрозуміло. Насправді ви можете сказати, що власність є власником когось чи чогось.
Якщо бути справедливим, то в комп'ютерних науках ці два слова, принаймні, здебільшого можна вживати взаємозамінно - але тоді програмісти, як правило, не володіють дипломами англійської літератури і не пишуть і не цікавляться граматичними книгами :).
Часто атрибут використовується для опису механізму або речі реального світу.
Властивість використовується для опису моделі.
Наприклад, документ (сидячи на вашому столі) може мати атрибут, що це чернетка.
Клас, який моделює документи, має властивість вказувати, є це чернетка чи ні. У цьому випадку майно захоплює державу.
Атрибут - це фактична річ, якою ви користуєтесь, наприклад, у своєму тезі HTML
<input type="checkbox" checked="checked" />
У цьому екземплярі тип та позначені є атрибутами. Однак властивість - це значення цих атрибутів, які браузер зберігає всередині елемента DOM. Часто значення атрибутів і властивостей рівні, саме це робить його таким заплутаним.
У цьому прикладі елемент DOM input
має властивість type
зі значенням, "checkbox"
а властивість checked
зі значеннямtrue
(зверніть увагу, чим це значення відрізняється від значення всередині атрибута HTML).
Використовуючи Firebug, ви можете спостерігати за поведінкою властивостей при натисканні на елемент та виборі "перегляду DOM".
Точне значення цих термінів багато в чому залежатиме від того, якою мовою / системою / Всесвітом ви говорите.
У HTML / XML атрибут - це частина тегу зі знаком рівності та значення, а властивість, наприклад, нічого не означає.
Тому нам потрібна додаткова інформація про те, який саме домен ви обговорюєте.
У 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 )
Властивість - це єдине ім’я, схоже на атрибут, який охоплює колекцію функцій setter, getter (і делетер).
Атрибут, як правило, є одним об'єктом всередині іншого об'єкта.
Сказавши, що, однак, Python дає вам такі методи, __getattr__
які дозволяють розширити визначення поняття "атрибут".
Підсумок - вони майже синонімічні. Python робить технічну відмінність у тому, як вони реалізовані.
У Java (або інших мовах) використання властивостей / атрибутів залежить від використання:
Властивість, яка використовується, коли значення не змінюється дуже часто (зазвичай використовується при запуску або для змінної середовища)
Атрибути - це значення (дочірнє об'єкт) Елемента (об'єкта), яке може змінюватися дуже часто / весь час і бути або не стійким
У HTML видається, що атрибути є специфічними для дерева DOM, тоді як властивості використовуються для опису характеристик елементів DOM
Чим відрізняється атрибут та властивість?
Яка різниця між функцією та функцією? Чим відрізняється Характер від Характера? Яка різниця між діянням та поведінкою?
Це просто зміна контексту.
Об'єкт, продукт, особистість, особа
Людина діє в поведінці. Особистість має характеристики даного характеру. Продукт має особливості, які отримують функціональність. Об'єкт мав атрибути, які надають йому властивості.
<property attribute="attributeValue">proopertyValue</property>
був би один із способів поглянути на це.
В C #
[Attribute]
public class Entity
{
private int Property{get; set;};
Delphi використовував властивості, і вони знайшли шлях до .NET (тому що він має того самого архітектора).
У Delphi вони часто використовуються в поєднанні з інформацією про тип виконання, так що інтегрований редактор властивостей може бути використаний для встановлення властивості в режимі очікування.
Властивості не завжди пов'язані з полями. Це можуть бути функції, які можуть мати побічні ефекти (але, звичайно, це дуже поганий дизайн).