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

Meu projeto pessoal

Olá! Eu estou criando uma classe que representa uma bomba de combustível. Por enquanto ela está assim:

"""Uma classe que pode ser usada para representar uma bomba de combustivel"""

class BombaDeCombustivel:

    def __init__(self, valor, combustivel):
        self.__valor = valor
        self.__combustivel = combustivel
        self.__valor_por_litro = 2.0

    def abastecer_por_valor(self):
        print(f"Abastecendo R${self.__valor} de {self.__combustivel}")

    def __verifica_litragem(self):
        litragem = self.__valor / self.__valor_por_litro

    def painel(self):
        print(f"R$ {self.__valor}")
        print(f"{self.__verifica_litragem} litros")

A minha dúvida é na parte de chamar o método def.painel(self) onde eu gostaria que mostrasse o valor abastecido e os litros. Porém me retorna algo assim: R$ 20.0 <bound method BombaDeCombustivel._verificalitragem of <bomba_de_combustivel.BombaDeCombustivel object at 0x000001C70BC7E820>> litros

Tenho quase certeza que tem a ver com o método privado def _verificalitragem(self):

Alguém me daria uma ideia de como concertar isso?

2 respostas
solução!

Nessa linha:

 print(f"{self.__verifica_litragem} litros")

Quando você chama a função "_ verificialitragem" sem colocar (), você está pedindo para ele imprimir o objeto, para executar a função, você deve colocar os parênteses ()

 print(f"{self.__verifica_litragem()} litros")

E aí vem o segundo problema, quando essa def for executada, ela vai inserir o valor do calculo em uma variavel chamada "litragem" e só, não fará mais nada. O que você deseja é que essa função retorne o valor do calculo, então adicione:

return litragem

Eu estava imaginando que deveria usar return no método __verifica_litragem(self). Incrivel como um simples ' () ' pode mudar a lógica. OBRIGADO!