1
resposta

Erro ao testar procedimento do exercício

from conta import Conta Traceback (most recent call last): File "", line 1, in File "C:\sistemas\python\pycharm\PyCharm Community Edition 2017.2.4\helpers\pydev_pydev_bundle\pydev_import_hook.py", line 20, in do_import module = self._system_import(name, args, *kwargs) File "C:\sistemas\projetos\python\oo\conta.py", line 3, in class Conta: File "C:\sistemas\projetos\python\oo\conta.py", line 37, in Conta @property.setter TypeError: descriptor 'setter' requires a 'property' object but received a 'function'

Se no último método trocar a anotação por: @limite.setter não acontece o erro. Mas gostaria de saber o porque de mesmo respondido certo no exercício, quando vou testar não funciona.

Segue o código abaixo:

-- coding: UTF-8 --

class Conta:

def init(self, p_numero, p_titular, p_saldo, p_limite = 1000.0): print('Construindo o objeto... {}'.format(self)) self.numero = p_numero self.titular = p_titular self.saldo = float(p_saldo) self.limite = float(p_limite)

def depositar(self, p_valor): self.__saldo += p_valor

def sacar(self, p_valor): self.__saldo -= p_valor

def transferir(self, p_valor, p_destino): self.sacar(p_valor) p_destino.depositar(p_valor)

def extrato(self): print("O Saldo do {} é {}".format(self.titular, self.saldo))

@property def titular(self): return self.__titular

@property def saldo(self): return self.__saldo

@property def limite(self): return self.__limite

@property.setter def limite(self, p_limite): self.__limite = p_limite

1 resposta

Anderson,

Vc cometeu alguns erros ao transcrever o exercício, não precisa usar o "-- coding: UTF-8 --" no python3, na linha 3 já tem erro. Tente usar a mesmo formatação do instrutor, e usei o "inserir código" para ficar com um visual melhor as suas perguntas:

class Conta:

    def __init__(self, numero, titular, saldo, limite):
        print("Construindo objeto ... {}".format(self))
        self.__numero = numero
        self.__titular = titular
        self.__saldo = saldo
        self.__limite = limite

    def extrato(self):
        print("Saldo de {} do titular {}".format(self.__saldo, self.__titular))

    def deposita(self, valor):
        self.__saldo += valor

    def saca(self, valor):
        self.__saldo -= valor

    def transfere(self, valor, destino):
        self.saca(valor)
        destino.deposita(valor)

    @property
    def saldo(self):
        return self.__saldo

    @property
    def titular(self):
        return self.__titular

    @property
    def limite(self):
        return self.__limite

    @limite.setter
    def limite(self, limite):
        self.__limite = limite

OBS: Esse erro é um problema do pycharm, se vc executar via linha do comando ou o IDLE o código acima não aparece erro algum. Site da Jetbrains: https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000058690-Module-not-found-in-PyCharm-but-externally-in-Python