2010-04-16 39 views
3

在Ruby 1.9,我可以使用它的類變量,像下面這樣:在Python中,Ruby的class @@變量等價於什麼?

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和子類是不同的。 – 2010-04-16 17:58:39

回答

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棘手(可行的,但不值得麻煩恕我直言)。

相關問題