Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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_Divide By Zero - Fatal编程技术网

Python被零除错误

Python被零除错误,python,divide-by-zero,Python,Divide By Zero,我有一个python类,具有以下属性: 这当然会抛出零错误: ZeroDivisionError:整数除法或模零除法 我的想法是,稍后我将递增number1和number2,但是self.divide会自动更新吗?如果它是自动更新的,那么如何绕过零错误?谢谢。否,self.divided是一个简单属性,不会自动更新。对于动态属性,请改用: 自动更新,避免零错误: @property def divided(self): try: #suppose that number2

我有一个python类,具有以下属性:

这当然会抛出零错误:

ZeroDivisionError:整数除法或模零除法


我的想法是,稍后我将递增number1和number2,但是self.divide会自动更新吗?如果它是自动更新的,那么如何绕过零错误?谢谢。

否,
self.divided
是一个简单属性,不会自动更新。对于动态属性,请改用:


自动更新,避免零错误:

@property
def divided(self):
    try:
        #suppose that number2 is a float
        return self.number1/self.number2
    except ZeroDivisionError:
        return None

如我所示,您可以单次执行以下操作:

self.divided = self.number1/(self.number2  or not self.number2)
这可以确保如果值为0,则不会出现错误。
但请确保,仅当您使用整数值或大于1的值时才使用此属性。

您还可以使用较短版本的
divided=property(lambda obj:obj.number1/obj.number2)
@Fabian:然后我还必须解释lambdas。让我们保持简单。:-)现在你可能会争辩说,你也必须解释装饰师:-)@Fabian:希望OP有足够的篇幅来阅读链接文档@德多科:当然有。你想让它做什么?返回42?非常粗糙,但是很好!
@property
def divided(self):
    try:
        #suppose that number2 is a float
        return self.number1/self.number2
    except ZeroDivisionError:
        return None
self.divided = self.number1/(self.number2  or not self.number2)