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単純な属性であり、自動的に更新されません。動的属性の場合は、property代わりにa を使用します。

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 に答える