这些似乎是同一回事。但是在什么情况下哪个术语更合适?
这些似乎是同一回事。但是在什么情况下哪个术语更合适?
Answers:
一般而言(和通常的英语用法),这些术语表示同一件事。
在HTML / Javascript的特定上下文中,由于DOM元素的HTML表示具有属性(在XML中用于标记中包含的键/值对的术语)而使这些术语感到困惑,但是当将其表示为JavaScript对象时,这些属性显示为对象属性。
为了进一步混淆,对属性的更改通常会更新属性。
例如,更改element.href
属性将更新元素的href
属性,这将反映在对的调用中element.getAttribute('href')
。
但是,如果您随后阅读该属性,即使该属性可能是相对URL ,它也将被标准化为绝对URL!
python
。我可以使用术语class attribute
和instance property
吗?
这些词在计算机科学出现之前就已经存在。
属性是我们归因于某人或某物的质量或对象。例如,权杖是权力和国家地位的属性。
财产是一种没有任何归属而存在的品质。例如,粘土具有粘性。或者,金属的特性之一是导电性。属性通过物理现象展示自己,而无需将其归因于某人或某物。同样,说某人具有男性属性是不言而喻的。实际上,您可以说某个财产归某人或某物所有。
公平地讲,在计算机科学中,这两个词至少在大多数情况下可以互换使用-但是程序员再次通常不会持有英语文学学位,也不会写或不太在意语法书:)。
通常,属性用于描述机制或现实世界中的事物。
一个属性是用来描述模型。
例如,文档(坐在您的办公桌上)可能具有草稿的属性。
对文档进行建模的类具有指示其是否为草稿的属性。在这种情况下,属性将捕获状态。
属性是您在HTML标记中使用的实际内容,例如
<input type="checkbox" checked="checked" />
在这种情况下,type和checked是属性。但是,属性是这些属性的值,浏览器将其保存在DOM元素内。通常,属性的值和属性的值是相等的,这就是令人困惑的原因。
在这个例子中的DOM元素input
具有属性type
具有值"checkbox"
和属性checked
具有值true
(通知从HTML属性内的值该值不同如何)。
使用Firebug,您可以在单击元素并选择“ DOM视图”时观察属性的行为。
在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在实现方式上有技术上的区别。
<property attribute="attributeValue">proopertyValue</property>
将是一种看待它的方式。
在C#中
[Attribute]
public class Entity
{
private int Property{get; set;};
Delphi使用了属性,并且已经找到了进入.NET的方法(因为它具有相同的架构师)。
在Delphi中,它们通常与运行时类型信息结合使用,以便可以使用集成的属性编辑器在设计时设置属性。
属性并不总是与字段相关。它们可能是可能具有副作用的功能(但当然这是非常糟糕的设计)。