Python中与Ruby的class @@variable相当的是什么?

5
在 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+ 中实现上述功能?

1
你可能需要明确是否要与类变量或单例类的实例变量(class << Sample; attr_accessor :count; end)具有相同的行为。前者在Sample及其任何子类之间共享,而后者将对Sample和子类分别独立。 - Marc-André Lafortune
1个回答

6
class Sample(object):
  _count = 0

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

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

Python与Ruby在使用上有些不同;例如,如果您在模块a.py中有以下代码:

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

在Python中,拥有一个与实例属性相同名称的Sample.count "类属性"会有些棘手(可行,但我认为不值得麻烦)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接