我在python中有一个Class,具有以下属性:
self.number1 = 0 self.number2 = 0 self.divided = self.number1/self.number2
这当然会抛出零误差:
ZeroDivisionError:整数除法或模数为零
我的想法是我稍后会增加number1和number2,但是self.divided会自动更新吗?如果是自动更新,那么如何解决零错误?感谢。
答案 0 :(得分:14)
不,self.divided
是一个简单的属性,不会自动更新。对于动态属性,请改用property
:
class Foo(object):
number1 = 0
number2 = 0
@property
def divided(self):
return self.number1 / self.number2
答案 1 :(得分:10)
自动更新,避免ZeroDivisionError:
@property
def divided(self):
try:
#suppose that number2 is a float
return self.number1/self.number2
except ZeroDivisionError:
return None
答案 2 :(得分:0)
如我所示,您可以单独执行以下操作:
self.divided = self.number1/(self.number2 or not self.number2)
这可以确保如果您的值为0,则不会出现错误。 但请确保只有在使用大于1的整数值或值时才使用它。