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

Me ajudem no Propertyt !

Ola eu estou desevolvendo um codigo, e esse codigo possui uns property o problema e quando eu chamo eles els me devolvem isso:

<property object at 0x0000020E44A08A90>
<property object at 0x0000020E44A0F040>

Eu não consigo ver onde esta o problema os codigos são:

Primeiro:

class TratadorAgenda(Interface):

    def __init__(self):
        super().__init__()
        self._descompacta_agenda = titulo, descricao, categoria = self.pacote_agenda
        self.__banco_dados_agenda = self.armazena(self._descompacta_agenda)

    @property
    def __str__(self):
        return self._descompacta_agenda

    def armazena(self, agenda_descompactada):
        armazem = agenda_descompactada
        return armazem

    @property
    def imprimer_agenda(self):
        titulo = self._descompacta_agenda[0]
        descricao = self._descompacta_agenda[1]
        categoria = self._descompacta_agenda[2]

        agenda = f"Titulo:{titulo.capitalize()}\nDescrição:{descricao.capitalize()}" \
                 f"\nCategoria:{categoria.capitalize()}"
        return agenda

class TratadorData(Interface):

    def __init__(self):
        super().__init__()
        self._descompacta_data = dia, mes, ano, hora, minuto = self.pacote_data
        self.__banco_dados_data = self.armazena_data(self._descompacta_data)

    @property
    def __str__(self):
        return self.imprimir_data

    def armazena_data(self, datas_descompactadas):
        armazem = datas_descompactadas
        return armazem

    @property
    def imprimir_data(self):
        dia = self._descompacta_data[0]
        mes = self._descompacta_data[1]
        ano = self._descompacta_data[2]
        hora = self._descompacta_data[3]
        minuto = self._descompacta_data[4]

        data = f"Data:{int(dia):02d}/{int(mes):02d}/{int(ano):02d},{hora:02d}:{minuto:02d}"
        return data

Segundo(onde fica a execução):

from Agenda.trata_agenda import TratadorAgenda, TratadorData
from Template_agenda.template import Interface

zx = TratadorAgenda
ys = TratadorData

abc = Interface
abc.template_inicial()
abc.recebe_agenda()
abc.recebe_data()

print(zx.imprimer_agenda)
print(ys.imprimir_data)

Se poderem me ajudar muito obrigado!

4 respostas

Você tem que chamar a função pra executar ela, basta colocar os () depois de chamar a classe, sem isso você ta chamando a posição desse objeto na memoria e não o que ela faz:


zx = TratadorAgenda()
ys = TratadorData()

abc = Interface()
abc.template_inicial()
abc.recebe_agenda()
abc.recebe_data()

print(zx.imprimer_agenda)
print(ys.imprimir_data)

Bom amigo quando eu fiz isso apareceu isso aqui 'property' object is not callable', ae quando pede para tirar os parênteses abaca acontecendo a mesma coisa como ta escrito ae em cima.

solução!

A é verdade é um property desculpe, deixa os parentesis só nas classes, no seu imprimer_agenda e imprimir_data deixe sem e me diz se funciona.

Ah, e só pra você saber, não precisa colocar @property no __str__ não. O seu __str__ já vai ser chamado quando você chamar sua classe por ex print(zx) mesmo sem colocar esse @property

VALEU cara funcionou mesmo