Sınıf değişkenleri ve sınıf örnek değişkenleri arasındaki fark?
Herkes sınıf değişkenleri ve sınıf örnek değişkenleri arasındaki farkı söyleyebilir mi?
CEVAP
Bir sınıf değişkeni (@@) sınıfı ve onun torunları arasında paylaşıldı. Bir sınıf örneği değişken (@) sınıfı torunları tarafından paylaşılan değildir.
Sınıf değişkeni (@@)
Hadi bir sınıf değişkeni @@okuduğunuz için ben ve erişenleri ve @@yazdığım bir sınıf Foo var:
class Foo
@@i = 1
def self.i
@@i
end
def self.i=(value)
@@i = value
end
end
Ve türetilmiş bir sınıf
class Bar < Foo
end
Foo ve Bar @@için aynı değerde olduğunu görüyoruz:
p Foo.i # => 1
p Bar.i # => 1
Ve @@ben değişen hem de onlar değişmez
Bar.i = 2
p Foo.i # => 2
p Bar.i # => 2
Sınıf örneği değişken (@)
Hadi bir sınıf örneği ile basit bir sınıf değişkeni @ben ve set okuma ve @ben yazmak için:
class Foo
@i = 1
def self.i
@i
end
def self.i=(value)
@i = value
end
end
Ve türetilmiş bir sınıf
class Bar < Foo
end
Bar @için erişenleri ben devralır, ancak miras değil @ben kendisini öyle görüyoruz:
p Foo.i # => 1
p Bar.i # => nil
Bar @@Foo ben etkilemeden ben de ayarlayabilirsiniz:
Bar.i = 2
p Foo.i # => 1
p Bar.i # => 2
Sınıf ve örnek yöntemleri arasındaki f...
Python: sınıf ve örnek öznitelikleri a...
Karşı sınıf değişkenleri Python örnek ...
Statik sınıf ve singleton deseni arası...
Python statik sınıf değişkenleri...