python被零除错误

Python Divide By Zero Error

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

1
2
3
    self.number1 = 0
    self.number2 = 0
    self.divided = self.number1/self.number2

这当然会导致零错误:

ZeroDivisionError: integer division or modulo by zero

我的想法是稍后增加数字1和数字2,但是self.divided会自动更新吗?如果它是自动更新的,那么我如何绕过零错误呢?谢谢。


不,self.divided是一个简单的属性,不会自动更新。对于动态属性,使用property代替:

1
2
3
4
5
6
7
class Foo(object):
    number1 = 0
    number2 = 0

    @property
    def divided(self):
        return self.number1 / self.number2


自动更新,避免零分区错误:

1
2
3
4
5
6
7
@property
def divided(self):
    try:
        #suppose that number2 is a float
        return self.number1/self.number2
    except ZeroDivisionError:
        return None


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

1
self.divided = self.number1/(self.number2  or not self.number2)

这样可以确保如果值为0,则不会出现错误。但请确保,只有在使用整数值或大于1的值时才使用此选项。