8

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

    self.number1 = 0
    self.number2 = 0
    self.divided = self.number1/self.number2

这当然会引发零错误:

ZeroDivisionError:整数除法或以零为模

这个想法是我稍后会增加 number1 和 number2,但是 self.divided 会自动更新吗?如果它是自动更新的,那么我该如何解决零错误?谢谢。

4

3 回答 3

16

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

class Foo(object):
    number1 = 0
    number2 = 0

    @property
    def divided(self):
        return self.number1 / self.number2
于 2012-11-30T13:38:12.510 回答
15

避免 ZeroDivisionError 的自动更新:

@property
def divided(self):
    try:
        #suppose that number2 is a float
        return self.number1/self.number2
    except ZeroDivisionError:
        return None
于 2012-11-30T13:41:59.667 回答
1

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

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

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

于 2018-02-13T16:00:49.183 回答