Neden't Python statik değişkenler var?
questions asking how to simulate static variables in python var.
Ayrıca, web üzerinde bir çok farklı çözümler statik değişkenleri oluşturmak için bulabilirsiniz. (Gerçi ben henüz böyle bir şey görmedim.)
Neden Python yöntemleri statik değişkenleri desteklemiyor mu? Bu unpythonic kabul edilir ya da bir şey Python sözdizimi ile ilgisi var mı?
Düzenleme:
Özellikle sordumnedentasarım kararı ve statik değişkenler simüle etmek için açıklama kaçınmak istediğim için herhangi bir kod örneği sağlanan değil.
CEVAP
Gerçekten bir jeneratör kullanarak olmalıdır zaman gerçekten bir sınıf kullanarak olmalıdır zaman. bu ihmal statik değişkenler sadece iki durumda yararlı arkasındaki fikir:
Eğer bir fonksiyon için durum bilgisi bilgi eklemek istiyorsan, ihtiyacın olan bir sınıftır. Basit basit bir sınıf, belki de, ama yine de sınıfı:
def foo(bar):
static my_bar # doesn't work
if not my_bar:
my_bar = bar
do_stuff(my_bar)
foo(bar)
foo()
# -- becomes ->
class Foo(object):
def __init__(self, bar):
self.bar = bar
def __call__(self):
do_stuff(self.bar)
foo = Foo(bar)
foo()
foo()
Eğer işlevin davranışı deniyor her zaman değiştirmek istiyorsan, ihtiyacın olan bir jeneratör
def foo(bar):
static my_bar # doesn't work
if not my_bar:
my_bar = bar
my_bar = my_bar * 3 % 5
return my_bar
foo(bar)
foo()
# -- becomes ->
def foogen(bar):
my_bar = bar
while True:
my_bar = my_bar * 3 % 5
yield my_bar
foo = foogen(bar)
foo.next()
foo.next()
Tabii ki, statik değişkenlerküçük görevler için büyük yapılar güçlük uğraşmak istemiyorum hızlı-ve-kirli senaryo için faydalı. Ama yok, gerçekten global
— ama kludgy görünebilir, ama bu küçük bir sorun, bir komut daha fazla bir şey gerekmez:
def foo():
global bar
do_stuff(bar)
foo()
foo()
Neden statik değişkenler kötülük sayıl...
Bir işlev içinde statik değişkenler Py...
Neden ThreadLocal değişkenler statik J...
Python statik sınıf değişkenleri...
Python statik yöntemler?...