属性とプロパティの違いは何ですか?[閉まっている]


162

これらは同じことを意味するようです。しかし、どの用語がどのコンテキストでより適切ですか?


4
コンテキストについてより具体的に説明できますか?たとえば、これらの用語はC#コンテキスト内ではまったく異なることを意味します。
David Arno

1
@David Arno-異なる言語構文が一方または両方の単語を割り当てていますが、特定の言語の構文とは無関係ですが、意味に違いはありますか?それは悪い質問ではありません。
Corey Trager

4
悪い質問だと思います。シソーラスをチェックすると、実際の言葉で同義語であることが示されますが、コンピューターやメタ言語が異なれば、それらにまったく異なる役割が割り当てられる場合があるため、特定のコンピューター言語では同義語ではない場合があります。したがって、コンテキストがすべてです。
David Arno、

9
私はもっ​​と……共感します。「方法」という言葉を初めて聞いたときのことを覚えています。「方法」とは一体何ですか?ああ、それはクラスに属しているときに関数を呼び出すものです。なぜ古いものに新しい用語を使用するのですか?ソロー氏は、「新しい服を必要とするすべての企業に注意してください」と語った。(または言葉...)
Corey Trager

1
この質問は、いくつかのコンテキストを提供せずに広すぎます(書かれているように、すべての可能なコンテキストのリストでのみ答えることができます)。
クエンティン

回答:


199

一般的な用語(および通常の英語の使用法)では、これらの用語は同じことを意味します。

HTML / JavaScriptの特定のコンテキストでは、DOM要素のHTML表現に属性(タグ内に含まれるキー/値ペアのXMLで使用される用語)があるため、用語が混乱しますが、JavaScriptオブジェクトとして表される場合、これらの属性オブジェクトのプロパティとして表示されます

さらに混乱させるために、プロパティを変更すると、通常は属性が更新されます。

たとえば、element.href プロパティを変更すると、要素のhref 属性が更新され、それがへの呼び出しに反映されますelement.getAttribute('href')

ただし、後でそのプロパティを読み取る場合、属性が相対URL であっても、絶対URLに正規化されます。


14
これは受け入れられる答えになるはずです!
Rubens Mariuzzo 2014年

3
@RubensMariuzzo、それがどんなに正確であっても、ここでは答えはありません。コンテキストを前提として、人々が混乱する可能性がある点について詳しく説明しています。
Brett Caswell 14

@BrettCaswell、私はDOMコンテキスト(HTML / JS)では、この答えが違いを明確かつ単純に説明してくれると思います。
Rubens Mariuzzo 2014

1
@Alnitak明確な答え。私はあなたのために世紀の1つを作りました。
mkHun 2017

出身pythonです。用語class attributeとを使用できますinstance propertyか?
サリット

71

これらの言葉は、コンピュータサイエンスが登場する前から存在していました。

  1. 属性は、私たちが誰かまたは何かに帰属させる品質またはオブジェクトです。たとえば、セプターは権力と国家の属性です。

  2. プロパティは、帰属なしに存在する品質です。たとえば、粘土には粘着性があります。または、金属の特性の1つは導電率です。プロパティは、誰かまたは何かに起因する必要なしに、物理的現象を通じて自分自身を示します。同様に、誰かが男性的な属性を持っていると言うことは自明です。実際、プロパティは誰かまたは何かが所有していると言えます。

公平を期すために、コンピュータサイエンスでは、これらの2つの単語は、少なくとも大部分は同じ意味で使用できます。ただし、プログラマは通常、英語の文学の学位を取得しておらず、文法の本についてはあまり気にしていません。


1
私が理解しているように、あなたはその意味に近づいています。属性はタイプ記述子であり、オブジェクトを文脈外の何か(インタピータのような)に記述します。つまり、コンテキストがありますが、そのコンテキストは交換可能です。たとえばHTMLを使用する場合、ドキュメントを解析してページに表示またはレンダリングする意図がなければ、幅の目的全体は機能しません。
Brett Caswell

ありがとうございました!名前を付けるときにどの用語を使用するかについてのガイダンスを探してここに来ました。これが技術的に正しいかどうかは(あまり)気にもしませんが、これは本当に役立つ区別です。
user1433150 2016

1
これも私が探していた答えです。なぜコンテキストなのか、特定の言語実装者が決定したことは重要なのか。彼らは恣意的または教育を受けていない決定をした可能性があります。私は教育を受けたものを作りたいのですが、これは私に他のものを選ぶ理由を具体的に与えてくれます。また、特定の実装者が選択した理由を明らかにする場合もあります。
bielawski 2016年

2
私にとってうまくいくのは、プロパティを客観的、属性を相対的/主観的と見なすことです。色、形、スコア、風速、気温(98'F)などの特徴やその他の客観的または測定可能な事実が優れた特性を生み出します。テクスチャー(「ソフト」)、条件(「風」)、温度(「暑い」)など、真実ではない機能は、属性を向上させます。
イワン

20

多くの場合、属性はメカニズムまたは実際の状況を説明するために使用されます

プロパティは、モデルを記述するために使用されます。

たとえば、(机の上に座っている)文書には下書きであるという属性がある場合があります。

ドキュメントをモデル化するクラスには、ドラフトかどうかを示すプロパティがあります。この場合、プロパティは状態をキャプチャします。


1
つまり、インスタンスのプロパティは属性ですか?
アブドゥラヒム2015

興味をそそられるが、私はそうは思わない。ドキュメントが与えられた場合、属性のインスタンスは一枚の紙である可能性があります。モデルを表すプロパティのインスタンスは、前述の論文の内容に十分な大きさのバッファである場合があります。
Walt Stoneburner

17

属性は、HTMLタグ内で実際に使用するものです。

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

このインスタンスタイプでは、属性がチェックされます。ただし、プロパティはこれらの属性の値であり、ブラウザがDOM要素内に保存します。多くの場合、属性とプロパティの値は等しいため、混乱を招きます。

この例では、DOM要素にinputtype"checkbox"を持つプロパティcheckedと値を持つプロパティがありますtrue(この値がHTML属性内の値とどのように異なるかに注意してください)。

Firebugを使用すると、要素をクリックして「DOMビュー」を選択したときのプロパティの動作を観察できます。


これは受け入れられる答えになる可能性があります。理論的には明らかであり、文脈上も有用です。
ジョーネ

15

これらの用語の正確な意味は、話している言語/システム/ユニバースに大きく依存します。

HTML / XMLでは、属性は等号と値を持つタグの一部であり、たとえばプロパティは何も意味しません。

そのため、どのドメインについて話し合っているかについての詳細情報が必要です。


7
これは正しくありません。アルニタクの答えを見てください。
kba 2013

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

属性とプロパティの違いは何ですか?
機能と機能の違いは何ですか?CharacteristicとCharacterの違いは何ですか?行為と行動の違いは何ですか?

そのコンテキストの変化だけです。

オブジェクト、製品、個性、人

人は行動の中で行動します。パーソナリティには、特定のキャラクターの特性があります。製品には、機能性を引き出す機能があります。オブジェクトには、プロパティを与える属性がありました。


それは実際に良い答えです。
匿名

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では、統合型プロパティエディタを使用してデザインタイムにプロパティを設定できるように、ランタイムタイプ情報と組み合わせて使用​​されることがよくあります。

プロパティは常にフィールドに関連付けられているわけではありません。それらは、副作用の可能性がある機能です(もちろん、非常に悪い設計です)。


必ずしも。永続オブジェクトの自動ダーティチェックは、悪いデザインではない副作用のあるプロパティの例です。
2008年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.