属性和属性有什么区别?[关闭]


161

这些似乎是同一回事。但是在什么情况下哪个术语更合适?


4
您可以更具体地说明背景吗?例如,这些术语在C#上下文中表示完全不同的事物。
David Arno,

1
@David Arno-不同的语言语法使用了一个或两个单词,但独立于特定语言的语法,含义是否有所不同?这不是一个坏问题。
Corey Trager

4
我认为这是一个不好的问题。对同义词库的检查将显示它们在真实语言中是同义词,但是不同的计算机和元语言可能赋予它们完全不同的角色,因此它们对于特定的计算机语言可能不是同义词。因此上下文就是一切。
David Arno,

9
我更多...。我记得我第一次听到“方法”一词。什么是“方法”?哦,当它属于一个类时,就是所谓的函数。为什么要对旧的事物使用新的术语?梭罗说:“提防所有需要新衣服的企业”。(或文字...)
Corey Trager

1
这个问题太宽泛而没有提供一些上下文(如书面所言,只能用所有可能的上下文列表来回答)。
昆汀2014年

Answers:


198

一般而言(和通常的英语用法),这些术语表示同一件事。

在HTML / Javascript的特定上下文中,由于DOM元素的HTML表示具有属性(在XML中用于标记中包含的键/值对的术语)而使这些术语感到困惑,但是当将其表示为JavaScript对象时,这些属性显示为对象属性

为了进一步混淆,对属性的更改通常会更新属性。

例如,更改element.href 属性将更新元素的href 属性,这将反映在对的调用中element.getAttribute('href')

但是,如果您随后阅读该属性,即使该属性可能是相对URL ,它也将被标准化为绝对URL!


14
这应该是公认的答案!
Rubens Mariuzzo 2014年

3
@RubensMariuzzo,无论它有多准确,这里都没有答案。.它只是详细说明了在给定上下文的情况下人们可能会感到困惑的地方。
Brett Caswell 2014年

@BrettCaswell,我认为在DOM上下文(HTML / JS)中,此答案对我来说清楚而又简单。
Rubens Mariuzzo 2014年

1
@Alnitak明确答案。我为你开了一个世纪。
mkHun

我来自python。我可以使用术语class attributeinstance property吗?
Sarit

70

这些词在计算机科学出现之前就已经存在。

  1. 属性是我们归因于某人或某物的质量或对象。例如,权杖是权力和国家地位的属性。

  2. 财产是一种没有任何归属存在的品质。例如,粘土具有粘性。或者,金属的特性之一是导电性。属性通过物理现象展示自己,而无需将其归因于某人或某物。同样,说某人具有男性属性是不言而喻的。实际上,您可以说某个财产归某人或某物所有。

公平地讲,在计算机科学中,这两个词至少在大多数情况下可以互换使用-但是程序员再次通常不会持有英语文学学位,也不会写或不太在意语法书:)。


1
您更接近我所理解的含义。属性是类型描述程序,它将对象描述为超出上下文的内容(例如interpeter),也就是存在上下文,但是该上下文很可能是可互换的。例如,使用HTML时,如果您解析文档而无意将其显示/呈现到页面,则width的整个用途将不起作用。
Brett Caswell 2014年

谢谢!我来这里是为了寻找有关命名时何时使用哪个术语的指导。我什至不在乎(从技术上讲)这是否正确,这是一个非常有用的区别。
user1433150 '16

1
这也是我一直在寻找的答案。为什么上下文或任何特定的语言实现者决定重要的事情。他们可能做出了任意的或没有根据的决定。我想做一个受过良好教育的人,这给了我具体的理由选择一个人。它还可以阐明为什么特定实施者做出选择。
bielawski'3

2
对我有用的是将属性视为目标,将属性视为相对/主观。颜色,形状,分数,风速,温度(98'F)和其他客观或可测量的事实等特性均具有良好的性能。诸如纹理(“软”),条件(“多风”),温度(“热”)和其他不可否认的陈述等特性无疑会带来更好的属性。
伊万

20

通常,属性用于描述机制或现实世界中的事物。

一个属性是用来描述模型。

例如,文档(坐在您的办公桌上)可能具有草稿的属性。

对文档进行建模的类具有指示其是否为草稿的属性。在这种情况下,属性将捕获状态。


1
这是否意味着实例的属性是属性?
阿卜杜拉希姆

有趣,但我不相信。给定一个文档,一个属性的实例可能是一张纸。该模型的表示属性的实例可能是一个足够大的缓冲区,足以容纳该论文的内容。
Walt Stoneburner 2015年

17

属性是您在HTML标记中使用的实际内容,例如

<input type="checkbox" checked="checked" />

在这种情况下,type和checked是属性。但是,属性是这些属性的值,浏览器将其保存在DOM元素内。通常,属性的值和属性的值是相等的,这就是令人困惑的原因。

在这个例子中的DOM元素input具有属性type具有值"checkbox"和属性checked具有值true(通知从HTML属性内的值该值不同如何)。

使用Firebug,您可以在单击元素并选择“ DOM视图”时观察属性的行为。


这可能是公认的答案。理论上很清楚,上下文也很有用。
Jaune

15

这些术语的确切含义在很大程度上取决于您在说什么语言/系统/宇宙。

在HTML / XML中,属性是带有等号和值的标记的一部分,而属性则没有任何意义。

因此,我们需要有关您正在讨论的域的更多信息。


7
这是不正确的。请参阅Alnitak的答案。
kba

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在实现方式上有技术上的区别。


2

在Java(或其他语言)中,使用属性/属性取决于用法:

  • 当值不经常更改时使用的属性(通常在启动时或用于环境变量时使用)

  • 属性是元素(对象)的值(对象子对象),可以经常/始终更改并且可以持久或不持久


2

在HTML中,似乎属性特定于DOM树,而属性用于描述DOM元素的特征


2

属性和属性有什么区别?
功能和功能有什么区别?特征和特征之间有什么区别?行为与行为有什么区别?

它只是上下文的变化。

对象,产品,个性,人

一个人的行为举止。人格具有给定角色的特征。产品具有衍生功能的功能。对象具有赋予其属性的属性。


这实际上是一个很好的答案。
匿名

1
<property attribute="attributeValue">proopertyValue</property>

将是一种看待它的方式。

在C#中

[Attribute]
public class Entity
{
    private int Property{get; set;};

8
不好意思将其否决,但在XML中标记为属性的实际上是一个“元素”
Harald Scheirich,

@HaraldScheirich的回复很慢;),但该元素确实称为“属性”,以明确与Entity.Property的连接。这是不平常的XML元素实际上被称为“元素”

1

Delphi使用了属性,并且已经找到了进入.NET的方法(因为它具有相同的架构师)。

在Delphi中,它们通常与运行时类型信息结合使用,以便可以使用集成的属性编辑器在设计时设置属性。

属性并不总是与字段相关。它们可能是可能具有副作用的功能(但当然这是非常糟糕的设计)。


不必要。在持久性对象上进行自动脏检查将是具有副作用的属性示例,这并不是一个不好的设计。
Quibblesome
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.