Кажется, это означает одно и то же. Но какой термин больше подходит в каком контексте?
Кажется, это означает одно и то же. Но какой термин больше подходит в каком контексте?
Ответы:
В общих терминах (и при обычном использовании английского языка) термины означают одно и то же.
В конкретном контексте 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 view».
Точное значение этих терминов будет во многом зависеть от того, на каком языке / системе / вселенной вы говорите.
В 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 (и deleter).
Атрибут обычно представляет собой отдельный объект внутри другого объекта.
Сказав это, однако, Python предоставляет вам методы, __getattr__
которые позволяют вам расширить определение «атрибута».
Итог - они почти синонимы. Python делает техническое различие в том, как они реализованы.
В Java (или других языках) использование Property / Attribute зависит от использования:
Свойство, используемое, когда значение меняется не очень часто (обычно используется при запуске или для переменной среды)
Атрибуты - это значение (дочерний объект) элемента (объекта), которое может изменяться очень часто / постоянно и быть или не быть постоянным
В чем разница между атрибутом и свойством?
В чем разница между функцией и функцией? В чем разница между характеристикой и характером? В чем разница между актом и поведением?
Это просто изменение контекста.
Объект, продукт, Личность, Человек
Человек действует в поведении. Личность имеет характеристики данного персонажа. Продукт имеет функцию, которая выводит функциональность. Объект имел Атрибуты, которые придают ему Свойства.
<property attribute="attributeValue">proopertyValue</property>
был бы один способ посмотреть на это.
В C #
[Attribute]
public class Entity
{
private int Property{get; set;};
Delphi использовал свойства, и они нашли свой путь в .NET (потому что у него та же архитектура).
В Delphi они часто используются в сочетании с информацией о типе среды выполнения, так что встроенный редактор свойств можно использовать для установки свойства во время разработки.
Свойства не всегда связаны с полями. Это могут быть функции, которые могут иметь побочные эффекты (но, конечно, это очень плохой дизайн).