普段はRubyを使っています。Pythonの勉強を始めたのですが、早速躓いていたので教えて下さい。

class FizzBuzz
  def self.fizz?(i)
    i > 0 && (i % 3) == 0
  end

  def self.buzz?(i)
    i > 0 && (i % 5) == 0
  end

  def self.fizz_buzz?(i)
    fizz?(i) && buzz?(i)
  end

  def self.to_p(i)
    case
    when fizz?(i) && !fizz_buzz?(i)
      'Fizz'
    when buzz?(i) && !fizz_buzz?(i)
      'Buzz'
    when fizz_buzz?(i)
      'FizzBuzz'
    else
      i
    end
  end
end

1.upto(100) do |i|
  puts FizzBuzz.to_p(i)
end

これをpythonで書こうとしてるのですが、書き方がわかりません。
以下が私の書いたPythonのコードです。(実行できません。)
Pythonらしく書くにはこうするとよいなどのアドバイスもいただけると幸いです。

class FizzBuzz:
    @classmethod
    def is_fizz(i):
        return (i > 0 and (i % 3) == 0)

    @classmethod
    def is_buzz(i):
        return (i > 0 and (i % 5) == 0)

    @classmethod
    def is_fizz_buzz(i):
        return (self.is_fizz(i) and self.is_buzz(i))

    @classmethod
    def to_print(i):
        if self.is_fizz(i) and not self.is_fizz_buzz(i):
            return 'Fizz'
        elif self.is_buzz(i) and not self.fizz_buzz(i):
            return 'Buzz'
        elif self.fizz_buzz(i):
            return 'FizzBuzz'
        else:
            return i

for i in range(1, 101):
    print FizzBuzz.to_print(i)