2010-04-16 5 views
3

Dans Ruby 1.9, je peux utiliser la variable de classe comme ce qui suit:Quel est l'équivalent de la variable class @@ de Ruby en Python?

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 

Comment puis-je obtenir ce qui précède en Python 2.5+?

+1

Vous voudrez peut-être préciser si vous voulez le même comportement qu'une variable de classe, ou une variable d'instance de la classe singleton ('class << Sample; attr_accessor: count; end'). Le premier est partagé entre Sample et toute sous-classe, tandis que le dernier sera distinct pour Sample et la sous-classe. –

Répondre

6
class Sample(object): 
    _count = 0 

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

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

L'utilisation est un peu différente de Ruby; par exemple. si vous avez ce code dans le module a.py,

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

ayant une Sample.count « propriété de classe » (avec le même nom que le exemple propriété) serait un peu difficile en Python (faisable, mais pas la peine le problème à mon humble avis).

Questions connexes