Python statik yöntemler?
Bir sınıf başlatılıyor olmadan onları aramak gibi de: Python statik yöntemler olması mümkündür
ClassName.StaticMethod ( )
CEVAP
Evet, staticmethod dekoratör kullanarak
class MyClass(object):
@staticmethod
def the_static_method(x):
print x
MyClass.the_static_method(2) # outputs 2
Bazı kod statik bir yöntem tanımlama eski yöntem, bir işlevi yerine dekoratör olarak staticmethod
kullanarak kullanıyor olabilir. Bu sadece Python (2.2 ve 2.3) eski sürümleri desteklemek için varsa kullanılmalıdır
class MyClass(object):
def the_static_method(x):
print x
the_static_method = staticmethod(the_static_method)
MyClass.the_static_method(2) # outputs 2
Bu ilk örnek (@staticmethod
) kullanarak tamamen aynı, sadece güzel dekoratör sözdizimini kullanarak
Son olarak, staticmethod
idareli kullanın! Statik yöntemler Python gereklidir, ve ayrı bir "üst düzey" işlevi daha net olurdu. birçok kez onları görüyorum çok nadir durumlar vardır
The following is verbatim from the documentation::
Statik bir yöntem örtülü ilk bağımsız değişken almaz. Statik bir yöntem bildirmek için bu deyimi kullanın:
class C: @staticmethod def f(arg1, arg2, ...): ...
@Staticmethod biçim, işlevi bir dekoratör – ayrıntılar için Function definitions fonksiyon tanımları açıklamasına bakın.
Ya bir örneği (
C().f()
) sınıfı (C.f()
) veya çağrılabilir. Örneği kendi sınıfının dışında göz ardı edilir.Python statik yöntemler bu Java veya C bulunan benzerdir . Daha gelişmiş bir kavram için bkz: classmethod().
Statik yöntemler hakkında daha fazla bilgi için The standard type hierarchy standart tip hiyerarşi belgelerine bakın.
Sürüm 2.2 yeni.
Sürüm 2.4 değişti: İşlev dekoratör sözdizimi ekledi.
Python statik sınıf değişkenleri...
Neden't statik yöntemler Java'da ...
't neden C# Statik Yöntemler bir ...
Neden Python'In 'gizli'...
Bir işlev içinde statik değişkenler Py...