属性和属性有啥区别? [关闭]
Posted
技术标签:
【中文标题】属性和属性有啥区别? [关闭]【英文标题】:What is the difference between attribute and property? [closed]属性和属性有什么区别? [关闭] 【发布时间】:2010-09-20 11:36:40 【问题描述】:这些似乎是同一个意思。但是在什么情况下哪个词更合适呢?
【问题讨论】:
你能更具体地了解一下上下文吗?例如,这些术语在 C# 上下文中的含义完全不同。 @David Arno - 不同的语言语法占用了一个或两个单词,但独立于特定语言的语法,含义有区别吗?这不是一个坏问题。 我认为这是一个不好的问题。对同义词库的检查将显示它们在实际语言术语中是同义词,但不同的计算机和元语言可能会为它们分配完全不同的角色,因此它们可能不是特定计算机语言的同义词。所以上下文就是一切。 我更……同情。我记得我第一次听到“方法”这个词。 “方法”到底是什么?哦,当它属于一个类时,它就是你所说的函数。为什么要为旧事物使用新术语?梭罗说,“提防所有需要新衣服的企业”。 (或文字...) 是的,完全取决于上下文,但这是一个很好的问题!在数学术语中,函数返回一个值('对于给定的 X,只能有一个 Y',usw。)。方法只是“做某事”。在 XML(例如)中,属性具有name
属性和 value
属性。属性通常是抽象的,而属性通常是具体的(想想类/对象)。人类有属性:hasHair
和 hairColor
。 “约翰”有属性:hasHair="true"
和hairColor="purple"
(约翰是扭蛋的粉丝)。
【参考方案1】:
在一般术语(以及正常的英语用法)中,这些术语的含义相同。
在 html / javascript 的特定上下文中,术语会混淆,因为 DOM 元素的 HTML 表示具有 属性(这是在 XML 中用于标记中包含的键/值对的术语) 但当表示为 JavaScript 对象时,这些属性显示为对象 properties。
更令人困惑的是,对属性的更改通常会更新属性。
例如,更改element.href
属性 将更新元素上的href
属性,这将反映在对element.getAttribute('href')
的调用中.
但是,如果您随后读取该属性,它将被规范化为绝对 URL,即使 属性 可能是相对 URL!
【讨论】:
这应该是公认的答案! @BrettCaswell,我认为在 DOM 上下文 (HTML/JS) 中,这个答案对我来说清楚而简单地解释了差异。 @Alnitak 明确的答案。我为你做了一个世纪之作。 我来自python
。我可以使用术语class attribute
和instance property
吗?【参考方案2】:
这些词在计算机科学出现之前就已经存在了。
属性是我们将其归因于某人或某物的品质或对象。例如,权杖是权力和国家地位的一种属性。
财产是一种无需任何归属地存在的品质。例如,粘土具有粘性;也就是说,粘土的一个特性是它的粘性。另一个例子:金属的特性之一是导电性。属性通过物理现象展示自己,而无需将它们归因于某人或某物。同理,说某人有阳刚之气是不言而喻的。实际上,您可以说财产归某人或某物所有。
但公平地说,在计算机科学中,这两个词至少在大多数情况下可以互换使用 - 但是程序员通常没有英语文学学位,也不写或不太关心语法书:)。
【讨论】:
你更接近我理解的意思。属性是类型描述器,它将对象描述为脱离上下文(如解释器)。也就是说,有一个上下文,但该上下文很可能是可互换的。以使用 HTML 为例,如果您解析文档而不打算将其显示/呈现到页面上,那么宽度的全部目的就没有任何作用。 谢谢!我来这里是为了寻找在命名时何时使用哪个术语的指导。我什至不在乎(太多)这在技术上是否正确,这是一个非常有用的区别。 这也是我一直在寻找的答案类型。为什么上下文或任何特定语言实现者决定的内容很重要。他们可能做出了武断或未经教育的决定。我想做一个受过教育的人,这给了我选择一个而不是另一个的具体理由。它还可以阐明特定实施者做出选择的原因。 对我有用的是将属性视为客观,将属性视为相对/主观。颜色、形状、分数、风速、温度 (98'F) 和其他客观或可测量的事实等特征构成了良好的属性。纹理(“软”)、条件(“风”)、温度(“热”)和其他不可否认的陈述等特征有助于更好的属性。 你从哪里得到这个定义?【参考方案3】:属性是您在 HTML 标记中使用的实际内容,例如
<input type="checkbox" checked="checked" />
在这个实例中类型和检查是属性。该属性是这些属性的值,浏览器将其保存在 DOM 元素中。通常属性和属性的值是相等的,这就是它如此混乱的原因。
在此示例中,DOM 元素 input
的属性 type
的值为 "checkbox"
,属性 checked
的值为 true
(请注意此值与 HTML 属性中的值有何不同) .
使用 Firebug,您可以在单击元素并选择“DOM 视图”时观察属性的行为。
【讨论】:
这可能是公认的答案。它在理论上很清楚,在上下文中也很有用。【参考方案4】:属性通常用于描述机制或现实世界的事物。
一个属性用于描述模型。
例如,一份文档(放在您的办公桌上)可能具有草稿的属性。
为文档建模的类有一个属性来指示它是否是草稿。在这种情况下,属性会捕获状态。
【讨论】:
是不是说,实例的属性就是属性? 很有趣,但我不这么认为。给定一个文档,一个属性的实例可能是一张纸;模型的表示属性的一个实例可能是一个足以容纳所述论文内容的缓冲区。【参考方案5】:这些术语的确切含义在很大程度上取决于您所谈论的语言/系统/宇宙。
在 HTML/XML 中,属性是标签中带有等号和值的部分,例如,属性并不意味着任何东西。
因此,我们需要有关您正在讨论的领域的更多信息。
【讨论】:
这是不正确的。请参阅 Alnitak 的回答。【参考方案6】:在 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 对它们的实现方式进行了技术区分。
【讨论】:
【参考方案7】:属性和属性有什么区别? 功能和功能有什么区别? Characteristic 和 Character 和有什么不一样? 行为和行为有什么区别?
这只是上下文的变化。
对象、产品、个性、人
一个人在一个行为中行动。 人格具有给定角色的特征。 产品具有派生功能的特征。 对象具有赋予它属性的属性。
【讨论】:
这实际上是一个很好的答案。 ...对最后一句话还是一头雾水【参考方案8】:在 Java(或其他语言)中,使用 Property/Attribute 取决于用法:
值不经常更改时使用的属性(通常在启动时使用或用于环境变量)
属性是一个元素(对象)的值(对象子对象),它可以经常/一直改变,并且是持久的或不持久的
【讨论】:
【参考方案9】:在 HTML 中,属性似乎是特定于 DOM 树的,而属性则用于描述 DOM 元素的特征
【讨论】:
【参考方案10】:<property attribute="attributeValue">proopertyValue</property>
将是看待它的一种方式。
在 C# 中
[Attribute]
public class Entity
private int Propertyget; set;;
【讨论】:
很抱歉投反对票,但在 XML 中,您标记的属性实际上是“元素” @HaraldScheirich 回复缓慢 ;) 但该元素确实被称为“属性”以明确与 Entity.Property 的连接。 xml 元素实际上被称为“元素”是不常见的【参考方案11】:Delphi 使用了属性,并且它们已经进入了 .NET(因为它具有相同的架构师)。
在 Delphi 中,它们通常与运行时类型信息结合使用,以便可以使用集成的属性编辑器在设计时设置属性。
属性并不总是与字段相关。它们可能是可能有副作用的函数(但当然这是非常糟糕的设计)。
【讨论】:
不一定。对持久对象的自动脏检查将是具有副作用的属性的一个示例,这不会是糟糕的设计。以上是关于属性和属性有啥区别? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
css样式中,position元素有几个属性?它们之间有啥联系和区别