FizzBuzzとの3か月(22)

お世話になっております。

今日は、Pythonに戻ります。
オブジェクト指向の特徴の一つである、継承を使ってみました。

以下、コードです。

class FizzBuzzNumber(int):
  def __init__(self, value):
    int.__init__(value)

  def __str__(self):
    if 0 == self % 3 and 0 == self % 5:
      return 'FizzBuzz'
    elif 0 == self % 3:
      return 'Fizz'
    elif 0 == self % 5:
      return 'Buzz'
    else:
      return str(self.__int__())

for i in range(1, 101):
  print(FizzBuzzNumber(i))

intを継承したFizzBuzzNumberクラスを作り、文字列表現を返す__str__メソッドをオーバーライドしています。
intを継承しているので、普通に足し算や引き算ができます。
ただし、足し算や引き算の戻り値はただのintですから、3の倍数や5の倍数になっても、数字が表示されるだけです。

継承を使うと、簡単に高機能なクラスを作れますが、スーパークラスをよく理解しておかないと、奇妙なバグに出くわしてしまいます。

以上