Qual é a diferença entre atributo e propriedade? [fechadas]

162

Estes parecem significar a mesma coisa. Mas qual termo é mais apropriado em que contexto?

cáustico
fonte
4
Você pode ser mais específico sobre o contexto? Por exemplo, os termos significam coisas totalmente diferentes dentro de um contexto C #.
David Arno #
1
@ David Arno - diferentes sintaxes de idiomas se apropriaram de uma ou ambas as palavras, mas independentemente da sintaxe de um idioma específico, existe alguma diferença no significado? Não é uma pergunta ruim.
Corey Trager #
4
Eu acho que é uma pergunta ruim. Uma verificação de um dicionário de sinônimos mostrará que eles são sinônimos em termos de idioma real, mas computadores e meta-idiomas diferentes podem atribuir papéis bastante diferentes e, portanto, podem não ser sinônimos para um idioma de computador específico. Então contexto é tudo.
David Arno
9
Eu sou mais .... compreensivo. Lembro-me da primeira vez que ouvi o termo "método". O que diabos é um "método"? Ah, é o que você chama de função quando pertence a uma classe. Por que nova terminologia para algo antigo? Thoreau disse: "cuidado com todas as empresas que exigem roupas novas". (ou palavras ...)
Corey Trager
1
Essa pergunta é muito ampla sem fornecer algum contexto (como está escrito, ela só pode realmente ser respondida com uma lista de todos os contextos possíveis).
Quentin

Respostas:

199

Em termos gerais (e no uso normal do inglês), os termos significam a mesma coisa.

No contexto específico de HTML / Javascript, os termos ficam confusos porque a representação HTML de um elemento DOM possui atributos (sendo o termo usado em XML para os pares de chave / valor contidos em uma tag), mas quando representados como um objeto JavaScript, esses atributos aparecem como propriedades do objeto .

Para confundir ainda mais as coisas, as alterações nas propriedades geralmente atualizam os atributos.

Por exemplo, alterar a element.href propriedade atualizará o href atributo no elemento e isso será refletido em uma chamada para element.getAttribute('href').

No entanto, se você ler posteriormente essa propriedade, ela será normalizada para um URL absoluto, mesmo que o atributo possa ser um URL relativo!

Alnitak
fonte
14
Esta deve ser a resposta aceita!
Rubens Mariuzzo
3
@RubensMariuzzo, por mais preciso que seja, não há resposta aqui .. apenas elabora um possível ponto de confusão para as pessoas, em um contexto.
Brett Caswell
@BrettCaswell, acho que em um contexto DOM (HTML / JS) essa resposta explica a diferença de forma clara e simples para mim.
Rubens Mariuzzo
1
@Alnitak Resposta clara. Eu fiz um do século para você.
MkHun
Eu venho python. Posso usar termo class attributee instance property?
Sarit
71

Essas palavras existiam muito antes de a Ciência da Computação aparecer.

  1. Atributo é uma qualidade ou objeto que atribuímos a alguém ou a algo. Por exemplo, o cetro é um atributo do poder e do Estado.

  2. Propriedade é uma qualidade que existe sem nenhuma atribuição . Por exemplo, a argila tem qualidades adesivas; ou, uma das propriedades dos metais é a condutividade elétrica. As propriedades se demonstram através de fenômenos físicos sem a necessidade de atribuí-las a alguém ou a alguma coisa. Da mesma forma, dizer que alguém tem atributos masculinos é evidente. Com efeito, você poderia dizer que uma propriedade pertence a alguém ou algo.

Para ser justo, porém, em Ciência da Computação, essas duas palavras, pelo menos na maior parte, podem ser usadas de forma intercambiável - mas, novamente, os programadores geralmente não possuem diploma em Literatura Inglesa e não escrevem ou se preocupam muito com livros de gramática :).

George
fonte
1
Você está mais perto do significado que eu entendo. Um atributo é um Descritor de tipo, descreve o objeto para algo fora do contexto (como um interpeter). Ou seja, existe um contexto, mas esse contexto pode muito bem ser intercambiável. Para usar HTML, por exemplo, todo o objetivo da largura não possui função se você analisar o documento sem intenção de exibi-lo / renderizá-lo em uma página.
Brett Caswell
Obrigado! Eu vim aqui procurando orientação sobre quando usar o termo ao nomear. Eu nem me importo (muito) se isso é tecnicamente certo ou não, é uma distinção realmente útil.
user1433150
1
Este é o tipo de resposta que eu estava procurando também. Por que o contexto ou o que qualquer implementador de linguagem específico decidiu? Eles podem ter tomado uma decisão arbitrária ou sem instrução. Eu quero fazer um educado e isso me dá razões concretas para escolher um sobre o outro. Também pode esclarecer por que um implementador específico fez sua escolha.
precisa saber é
2
O que funciona para mim é considerar propriedades como objetivas e atributos como relativos / subjetivos. Recursos como cor, forma, pontuação, velocidade do vento, temperatura (98 'F) e outros fatos objetivos ou mensuráveis ​​são boas propriedades. Recursos como textura ("suave"), condições ("ventoso"), temperatura ("quente") e outras declarações que não são inegavelmente verdadeiras criam melhores atributos.
Ivan
20

Geralmente, um atributo é usado para descrever o mecanismo ou coisa do mundo real.

Uma propriedade é usada para descrever o modelo.

Por exemplo, um documento (sentado em sua mesa) pode ter o atributo de que é um rascunho.

A classe que modela documentos possui uma propriedade para indicar se é um rascunho ou não. Nesse caso, a propriedade captura o estado.

Walt Stoneburner
fonte
1
Isso significa que a propriedade de uma instância é atributo?
Abdurrahim
Intrigante, mas não acredito. Dado um documento, uma instância de um atributo pode ser um pedaço de papel; uma instância da propriedade representativa do modelo pode ser um buffer grande o suficiente para o conteúdo do referido artigo.
Walt Stoneburner 8/08/15
17

Um atributo é a coisa real que você usa na sua tag HTML, como

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

Nesta instância, tipo e verificado são atributos. A propriedade, porém, é o valor desses atributos, que o navegador salva dentro do elemento DOM. Frequentemente, o valor dos atributos e das propriedades é igual, é o que a torna tão confusa.

Neste exemplo, o elemento DOM inputpossui a propriedade typecom o valor "checkbox"e a propriedade checkedcom o valor true(observe como esse valor difere do valor dentro do atributo HTML).

Usando o Firebug, você pode observar o comportamento das propriedades ao clicar em um elemento e selecionar a "visualização DOM".

smonusbonus
fonte
Esta poderia ser a resposta aceita. É claro na teoria e útil no contexto.
Jaune
15

O significado preciso desses termos vai depender muito de qual idioma / sistema / universo você está falando.

Em HTML / XML, um atributo é a parte de uma tag com sinal de igual e valor, e propriedade não significa nada, por exemplo.

Portanto, precisamos de mais informações sobre o domínio que você está discutindo.

Ned Batchelder
fonte
7
Isso não está correto. Veja a resposta de Alnitak.
Kb
6

Em 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 )

Uma propriedade é um único nome semelhante a um atributo que agrupa uma coleção de funções setter, getter (e deleter).

Um atributo geralmente é um único objeto dentro de outro objeto.

Dito isto, no entanto, o Python fornece métodos como o __getattr__que permite estender a definição de "atributo".

Bottom Line - eles são quase sinônimos. O Python faz uma distinção técnica em como eles são implementados.

S.Lott
fonte
2

Em Java (ou outros idiomas), o uso de Propriedade / Atributo depende do uso:

  • Propriedade usada quando o valor não muda com muita frequência (geralmente usada na inicialização ou para variável de ambiente)

  • Atributos é um valor (objeto filho) de um Elemento (objeto) que pode mudar com muita frequência / o tempo todo e ser ou não persistente

Eric
fonte
2

Em HTML, parece que os atributos são específicos da árvore DOM, enquanto as propriedades são usadas para descrever as características dos elementos DOM.

goonerify
fonte
2

Qual é a diferença entre Atributo e Propriedade?
Qual é a diferença entre Recurso e Função? Qual é a diferença entre Characteristic e Character? Qual é a diferença entre Act e Behavior?

É apenas uma mudança de contexto.

Objeto, produto, personalidade, pessoa

Uma pessoa age em um comportamento. Uma personalidade tem características de um determinado personagem. Um produto possui um recurso que deriva da funcionalidade. Um objeto tinha atributos que lhe dão propriedades.

Genérico
fonte
Essa é realmente uma boa resposta.
anonimo 27/05
1
<property attribute="attributeValue">proopertyValue</property>

seria uma maneira de olhar para isso.

Em c #

[Attribute]
public class Entity
{
    private int Property{get; set;};
pomba
fonte
8
Desculpe a votar este para baixo, mas em XML que você rotulado de propriedade é actualy um "elemento"
Harald Scheirich
@HaraldScheirich uma resposta lenta;) mas o elemento é realmente chamado de "propriedade" para deixar clara a conexão com o Entity.Property. Não é comum para elementos XML para realmente ser chamado de "elemento"
pomba
1

O Delphi usou propriedades e foi encontrado no .NET (porque ele tem o mesmo arquiteto).

No Delphi, eles são frequentemente usados ​​em combinação com informações do tipo de tempo de execução, de modo que o editor de propriedades integrado possa ser usado para definir a propriedade no tempo de design.

As propriedades nem sempre estão relacionadas aos campos. Elas podem ser funções que possivelmente têm efeitos colaterais (mas é claro que esse é um projeto muito ruim).

Toon Krijthe
fonte
Não necessariamente. A verificação suja automatizada de um objeto persistente seria um exemplo de propriedade com efeitos colaterais que não seriam um design ruim.
Quibblesome