4

Ruby 1.9では、次のようにクラス変数を使用できます。

class Sample
  @@count = 0

  def initialize
    @@count += 1
  end

  def count
    @@count
  end
end

sample = Sample.new
puts sample.count     # Output: 1

sample2 = Sample.new
puts sample2.count    # Output: 2

Python 2.5以降で上記を実現するにはどうすればよいですか?

4

1 に答える 1

6
class Sample(object):
  _count = 0

  def __init__(self):
    Sample._count += 1

  @property
  def count(self):
    return Sample._count

使用法はRubyとは少し異なります。たとえば、モジュールにこのコードがある場合a.py

>>> import a
>>> x = a.Sample()
>>> print x.count
1
>>> y = a.Sample()
>>> print x.count
2

Sample.countの「クラスプロパティ」(インスタンスプロパティと同じ名前)を持つことは、Pythonでは少し注意が必要です(実行可能ですが、わざわざIMHOの価値はありません)。

于 2010-04-16T17:53:00.850 に答える