Python statik yöntemi ()

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 @staticmethoddekoratö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, Datesyalnı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, toDashDateiçinde bir yardımcı program işlevi oluşturduk Dates.

Statik bir yöntemdir çünkü Dateskendisinin herhangi bir özelliğine erişmesi gerekmez ve sadece parametreleri gerektirir.

toDashDateSınıfın dışında da oluşturabiliriz , ancak yalnızca tarihler için çalıştığı için Datessı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 DatesWithSlashesstatik 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 DatesWithSlashessınıfta yöntemi geçersiz kılarak , sınıfla iyi çalışması için kolayca kullanabiliriz .

Ilginç makaleler...