Python除以零错误

eam*_*234 4 python divide-by-zero

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

    self.number1 = 0
    self.number2 = 0
    self.divided = self.number1/self.number2
Run Code Online (Sandbox Code Playgroud)

这当然会抛出零误差:

ZeroDivisionError:整数除法或模数为零

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

Mar*_*ers 14

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

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

    @property
    def divided(self):
        return self.number1 / self.number2
Run Code Online (Sandbox Code Playgroud)

  • @Fabian:然后我也要解释lambdas.让我们保持这个简单.:-) (5认同)
  • 你也可以使用较短的版本`divide = property(lambda obj:obj.number1/obj.number2)` (2认同)
  • 现在你可以争辩说你也必须解释装饰者:-) (2认同)

joj*_*ojo 10

避免ZeroDivisionError自动更新:

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