Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何限制实例变量值不超过定义的限制_Python_Oop - Fatal编程技术网

Python 如何限制实例变量值不超过定义的限制

Python 如何限制实例变量值不超过定义的限制,python,oop,Python,Oop,以下代码导致负余额。我不是在取款方法中加入if条件,而是在寻找其他方法来检查和限制余额为负时的余额 class Customer(object): def __init__(self, balance): self.balance = balance def withdrawl(self, amount): self.balance -= amount return self.balance jeff = Customer(1

以下代码导致负余额。我不是在取款方法中加入if条件,而是在寻找其他方法来检查和限制余额为负时的余额

class Customer(object):

    def __init__(self, balance):
        self.balance = balance

    def withdrawl(self, amount):
        self.balance -= amount
        return self.balance

jeff = Customer(1000.0)
print jeff.withdrawl(2000)

提前感谢

您可以执行以下操作:

class Balance():

    def __init__(self,x):
        assert x >= 0, "Balance can't be negative!"
        self.value = x

class Customer(object):

    def __init__(self, balance):
        self.balance = balance

    def withdrawl(self, amount):
        self.balance = Balance(self.balance.value - amount)
        return self.balance

jeff = Customer(Balance(1000.0))
print jeff.withdrawl(2000)

但对我来说,这似乎是一种过度的杀伤力。为什么不使用if语句?

我正在寻找一种方法,而不是添加条件。我不知道python实现这一目标的范围。避免使用关键字的基本原理是?
self.balance-=amount*(self.balance>=amount)
想知道这是否在范围内。不知道如何在教程中搜索相同的内容。使用关键字resolves,我知道。正如falsetru所演示的,您不需要使用
if
语句。另一种选择是使用自定义对象存储值,该值不能为负值,但该对象的代码需要使用
if
语句或类似falsetru示例中的语法。Python的禅宗说:“显式优于隐式”。当然,如果试图提取超过当前余额的金额,您不想默默地将余额限制为零。您不想生成某种警告或错误消息吗?