提问者:小点点

setter无法识别ValueError


我试图在python中用getter和setter做一个banck acc,但是当我把str放到saldo中时,setter不能识别ValueError,但是它应该弹出一些错误,因为这只是针对int和float而不是str

class Conta(Cliente):
    def __init__(self, nome, idade, cpf, agencia, conta, saldo):
        super().__init__(nome, idade, cpf)
        self._agencia = agencia
        self._conta = conta
        self.saldo = saldo
 
    @property
    def saldo(self):
        print('teste getter')
        return self._saldo
 
    @saldo.setter
    def saldo(self, value):
        print('test setter')
        if not isinstance(value, (int, float)):
            ValueError('value NEED to be a number!')
 
        self._saldo = value
 
cliente = Conta('leonardo', 1231,123123,1232,123123,saldo = 'it is supposed to print ValueError')

#output
test setter

共1个答案

匿名用户

异常名称前缺少raise关键字若要实际引发该异常,请尝试以下代码:

if not isinstance(value, (int, float)):
    raise ValueError('value NEED to be a number!')

相关的Python文档页面:错误和异常-引发异常