我在 python 中有一个类,具有以下属性:
self.number1 = 0 self.number2 = 0 self.divided = self.number1/self.number2
这当然会引发零错误:
ZeroDivisionError:整数除法或以零为模
这个想法是我稍后会增加 number1 和 number2,但是 self.divided 会自动更新吗?如果它是自动更新的,那么我该如何解决零错误?谢谢。
我在 python 中有一个类,具有以下属性:
self.number1 = 0 self.number2 = 0 self.divided = self.number1/self.number2
这当然会引发零错误:
ZeroDivisionError:整数除法或以零为模
这个想法是我稍后会增加 number1 和 number2,但是 self.divided 会自动更新吗?如果它是自动更新的,那么我该如何解决零错误?谢谢。
不,self.divided
是一个简单的属性,不会自动更新。对于动态属性,请改用 a property
:
class Foo(object):
number1 = 0
number2 = 0
@property
def divided(self):
return self.number1 / self.number2
避免 ZeroDivisionError 的自动更新:
@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 的值时才使用此选项。