Staticmethod () yerleşik işlevi, belirli bir işlev için statik bir yöntem döndürür.
Sözdizimi staticmethod()
şöyledir:
statik yöntem (işlev)
Kullanımı staticmethod()
, statik bir işlev oluşturmanın Pythonic olmayan bir yolu olarak kabul edilir.
Bu nedenle, Python'un daha yeni sürümlerinde @staticmethod
dekoratör kullanabilirsiniz .
Sözdizimi @staticmethod
şöyledir:
@staticmethod def func (değiştirgeler,…)
staticmethod () Parametreler
staticmethod()
Yöntem, tek bir parametre alır:
- işlev - statik bir yönteme dönüştürülmesi gereken işlev
Staticmethod () 'dan değer döndür
staticmethod()
Döner bir işlev için statik bir yöntem parametresi olarak geçti.
Statik yöntem nedir?
Statik yöntemler, sınıf yöntemlerine çok benzer şekilde, nesnesinden ziyade bir sınıfa bağlı yöntemlerdir.
Bir sınıf örneği oluşturulmasını gerektirmezler. Dolayısıyla, nesnenin durumuna bağlı değillerdir.
Statik yöntem ile sınıf yöntemi arasındaki fark şudur:
- Statik yöntem sınıf hakkında hiçbir şey bilmiyor ve sadece parametrelerle ilgileniyor.
- Sınıf yöntemi, parametresi her zaman sınıfın kendisi olduğu için sınıfla çalışır.
Hem sınıf hem de nesnesi tarafından çağrılabilirler.
Class.staticmethodFunc () veya hatta Class (). StaticmethodFunc ()
Örnek 1: staticmethod () kullanarak statik bir yöntem oluşturun
class Mathematics: def addNumbers(x, y): return x + y # create addNumbers static method Mathematics.addNumbers = staticmethod(Mathematics.addNumbers) print('The sum is:', Mathematics.addNumbers(5, 10))
Çıktı
Toplam: 15
Statik yöntemleri ne zaman kullanırsınız?
1. Fayda işlevini bir sınıfa gruplama
Statik yöntemlerin sınırlı bir kullanım durumu vardır, çünkü sınıf yöntemleri veya bir sınıftaki diğer yöntemler gibi, sınıfın kendi özelliklerine erişemezler.
Bununla birlikte, bir sınıfın herhangi bir özelliğine erişmeyen ancak sınıfa ait olduğu anlamını taşıyan bir yardımcı program işlevine ihtiyacınız olduğunda, statik işlevleri kullanırız.
Örnek 2: Statik yöntem olarak bir yardımcı program işlevi oluşturun
class Dates: def __init__(self, date): self.date = date def getDate(self): return self.date @staticmethod def toDashDate(date): return date.replace("/", "-") date = Dates("15-12-2016") dateFromDB = "15/12/2016" dateWithDash = Dates.toDashDate(dateFromDB) if(date.getDate() == dateWithDash): print("Equal") else: print("Unequal")
Çıktı
Eşit
Burada, Dates
yalnızca çizgi içeren tarihlerle çalışan bir sınıfımız var. Ancak, önceki veritabanımızda tüm tarihler eğik çizgilerle gösteriliyordu.
Eğik çizgi tarihlerini kısa çizgi tarihlerine dönüştürmek için, toDashDate
içinde bir yardımcı program işlevi oluşturduk Dates
.
Statik bir yöntemdir çünkü Dates
kendisinin herhangi bir özelliğine erişmesi gerekmez ve sadece parametreleri gerektirir.
toDashDate
Sınıfın dışında da oluşturabiliriz , ancak yalnızca tarihler için çalıştığı için Dates
sınıfın içinde tutmak mantıklıdır .
2. Tek bir uygulamaya sahip olmak
Statik yöntemler, bir sınıfın alt sınıflarının bir yöntemin belirli bir uygulamasını değiştirmesini / geçersiz kılmasını istemediğimizde kullanılır.
Örnek 3: Kalıtım statik yöntemle nasıl çalışır?
class Dates: def __init__(self, date): self.date = date def getDate(self): return self.date @staticmethod def toDashDate(date): return date.replace("/", "-") class DatesWithSlashes(Dates): def getDate(self): return Dates.toDashDate(self.date) date = Dates("15-12-2016") dateFromDB = DatesWithSlashes("15/12/2016") if(date.getDate() == dateFromDB.getDate()): print("Equal") else: print("Unequal")
Çıktı
Eşit
Burada, alt sınıfın DatesWithSlashes
statik fayda yöntemini geçersiz kılmasını istemeyiz, toDashDate
çünkü yalnızca tek bir kullanımı vardır, yani tarihi çizgi-tarihlerle değiştirin.
Statik yöntemi getDate()
, alt DatesWithSlashes
sınıfta yöntemi geçersiz kılarak , sınıfla iyi çalışması için kolayca kullanabiliriz .