Estes parecem significar a mesma coisa. Mas qual termo é mais apropriado em que contexto?
Estes parecem significar a mesma coisa. Mas qual termo é mais apropriado em que contexto?
Respostas:
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!
python
. Posso usar termo class attribute
e instance property
?
Essas palavras existiam muito antes de a Ciência da Computação aparecer.
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.
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 :).
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.
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 input
possui a propriedade type
com o valor "checkbox"
e a propriedade checked
com 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".
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.
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.
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
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.
<property attribute="attributeValue">proopertyValue</property>
seria uma maneira de olhar para isso.
Em c #
[Attribute]
public class Entity
{
private int Property{get; set;};
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).