Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

[Dúvida] Em alguns métodos não será necessário usar parênteses??

Em alguns métodos, não será necessário usar parênteses. Isso depende da documentação. Consultando a documentação, encontraremos uma descrição com vários exemplos de como se utiliza determinada função ou método. Agora, acompanharemos uma situação onde será necessário manipular uma string.

Eu sempre aprendi que todos os métodos possuem parênteses. Quando após o objeto há uma palavra sem o parênteses trata-se de um atributo e não um método.

Não seria isso? Poderia dar um exemplo de "método" sem usar parênteses?

5 respostas

Oi,

Exemplo:


from datetime import datetime

agora = datetime.now()

print(agora.year)    # Acessando o ano sem parênteses
print(agora.month)   # Acessando o mês sem parênteses
print(agora.day)     # Acessando o dia sem parênteses
print(agora.hour)    # Acessando a hora sem parênteses
print(agora.minute)  # Acessando os minutos sem parênteses
print(agora.second)  # Acessando os segundos sem parênteses

Olá Luis,

De acordo com documentação da class datetime.datetime esses são atributos da classe e não métodos.

Uma combinação de uma data e uma hora. Atributos: year, month, day, hour, minute, second, microsecond, e tzinfo.

https://docs.python.org/pt-br/3/library/datetime.html

solução!

São métodos chamados de atributos

Um método decorado com a anotação @property, permite acessá-lo diretamente como um atributo, sem parênteses

https://github.com/python/cpython/blob/3.11/Lib/datetime.py


# Read-only field accessors
    @property
    def year(self):
        """year (1-9999)"""
        return self._year

    @property
    def month(self):
        """month (1-12)"""
        return self._month

    @property
    def day(self):
        """day (1-31)"""
        return self._day

Exemplo de uso da anotação @property


class Exemplo:
    def __init__(self, valor):
        self._valor = valor

    @property
    def valor_dobrado(self):
        return self._valor * 2

objeto = Exemplo(5)

print(objeto.valor_dobrado)  # Sem a necessidade de usar parênteses

Excelente explicação Luis!!!

Ficou claro!

Obrigado!