2010-04-16 5 views
3

, 내가 좋아하는 그 클래스 변수를 사용하여 다음을 수행 할 수 있습니다파이썬에서 Ruby 클래스 @@ variable에 해당하는 것은 무엇입니까? 루비 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 

어떻게 파이썬 2.5 + 위를 달성 할 수 있습니까?

+1

클래스 변수 또는 싱글 톤 클래스 ('class << Sample; attr_accessor : count; end')의 인스턴스 변수와 동일한 동작을 원한다면 정확할 수 있습니다. 첫 번째 샘플은 Sample과 하위 클래스에서 공유되지만 나중에 Sample과 하위 클래스에서 구분됩니다. –

답변

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 "클래스 속성"을 갖는 경우 (파이썬에서 까다로운 가능하지만, 가치가 조금 것 귀찮은 IMHO).