ABD Münbiçi bırakır mı ?

ABD, Münbiçin yarısı sizde yarısı bizde kalsın dedi

SON 20 YILDA OSCAR KAZANAN KADINLAR

Son 20 yılda En İyi Kadın Oyuncu kategorisinde Oscar kazanan oyuncuların listesi...

AFRİN HAREKATI

Zeytin Dalı Harekatında teröristlerden temizlenen bölge artıyor

Silkroad XIAN

Silkroad sevdalıları için bir server

  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Python'da Zincirleme Metodlar

 
#1

Zincirleme metodlar, bir sınıfa ait metodları tek seferde çağırma şeklinde çalışırlar. Burada amaç kod okunabilirliğini artırmaktır. Çalışma mantığı olarak metod kendisini döndürür ve bu sayede peşine başka bir metod eklenebilir. Çalışma şeklinden dolayı bunlara zincirleme metod yani 

Kod:
Chaining Methods

deniliyor. Çalışma mantığını anladık ama biraz daha açıklamak gerekiyor. Örneğin bir 

Kod:
Cars

 sınıfında o sınıfa ait belirli metodlar bulunmakta. Bu metodların şöyle olduğunu düşünelim sahtece:

Kod:
A Sınıfı =>
   A1_Metodu =>
       ... işlemler
   A2_Metodu =>
       ... işlemler
   A3_Metodu =>
       ... işlemler

Böyle bir yapıda sınıfımızı b değişkenine ilklediğimizi ve metodları çağırdığımızı düşünelim. O zaman durum şu olurdu
Kod:
b = A Sınıfı
b.A1_Metodu
b.A2_Metodu
b.A3_Metodu

gibi tam da burada yardımcı olarak zincirleme metod deseni geliyor önümüze. Eğer bir chaining metod olsaydı yukarıdaki gibi alt alta bir tekrar yerine şöyle olacaktı:
Kod:
b.A1_Metodu.A2_Metodu.A3_Metodu

Evet anlatmak istediğim tam da bu oluyor. Peki bu Python’da nasıl çalışıyor? Öncelikle kısaca Cars sınıfımızı oluşturalım. Bu sınıf ise 
Kod:
maker, model, year, price, miles, show_detail

 metodlarına sahip olsun. Eldeki veriler üzerinden sınıfımızın iskeletini oluşturalım.

Kod:
class Cars(object):

   def maker(self, mkr):
       # işlemler

   def model(self, mdl):
       # işlemler

   def year(self, yr):
       # işlemler

   def price(self, prc):
       # işlemler

   def miles(self, mile):
       # işlemler

   def show_detail(self):
       # detay işlemleri

Evet iskeletimiz böyle. Şimdi maker yani üreticinin değer döndürmesini sağlamalıyız. Yukarıda metod kendisini döndürür ve bu sayede peşine başka bir metod eklenebilir demiştim. O zaman bu maker metodu son olarak kendisini döndürmeli. Ve yine kendisine değer almalı. Kendi değerini ise aldığı argümana eşitlemeliyiz. Bakalım hemen:
Kod:
def maker(self, mkr):
   self.maker = mkr
   return self

Kod:
return self

 ile metoda kendisini döndürme imkanı verdik. Bu işlemi 

Kod:
show_detail

 hariç diğer metodlara da uygulayalım:

Kod:
class Cars:

   def maker(self, mkr):
       self.maker = mkr
       return self

   def model(self, mdl):
       self.model = mdl
       return self

   def year(self, yr):
       self.year = yr
       return self

   def price(self, prc):
       self.price = prc
       return self

   def miles(self, mile):
       self.miles = mile
       return self

Son olarak da bu değerleri göstereceğimiz show_detail metodunu yazalım. O konu aslında basit olarak bildiğimiz bir konu zaten.
Kod:
def show_detail(self):
   print("Maker:", self.maker, "Model:", self.model, "Year:",
         self.year, "Price:", self.price, "Miles:", self.miles)

Artık marka model ne var ne yok yazdıracağız hem de ekstra bir uğraş vermeden. Kullanımına bakarsak anlayacağız:
Kod:
c = Cars()

c.maker("Aston Martin").model("DB9").year(2004).price(149.000).miles(30).show_detail()
# Maker: Aston Martin Model: DB9 Year: 2004 Price: 149.0 Miles: 30

Üreticisi Aston Martin olan 2004 üretimli DB9 Model 30 Mildeki aracın fiyatının 149 bin euro olduğunu söylettik diyelim. Evet bu işlem bu kadar çıktıyı da yukarıda gördük. Kodların tamamı:
Kod:
class Cars:

   def maker(self, mkr):
       self.maker = mkr
       return self

   def model(self, mdl):
       self.model = mdl
       return self

   def year(self, yr):
       self.year = yr
       return self

   def price(self, prc):
       self.price = prc
       return self

   def miles(self, mile):
       self.miles = mile
       return self

   def show_detail(self):
       print("Maker:", self.maker, "Model:", self.model, "Year:",
             self.year, "Price:", self.price, "Miles:", self.miles)

c = Cars()

c.maker("Aston Martin").model("DB9").year(
   2004).price(149.000).miles(30).show_detail()
# Maker: Aston Martin Model: DB9 Year: 2004 Price: 149.0 Miles: 30

Kodları denediğim ideone. Çalıştırılmış hali mevcut.



Ara
Cevapla


[-]
Hızlı Cevap

İnsan Doğrulama:
Aşağıda görünen onay kutusunu işaretleyiniz. Bu işlem otomatik spam kayıtları önlemek için kullanılır.

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Python ile Twitter Kullanmak - Tweepy Modülü (Twitter API) efsane 1 1,290 10-10-2018, Saat: 10:09
Son Yorum: adminn
  Python – Mechanize Modülü biohazard 0 494 06-04-2018, Saat: 19:14
Son Yorum: biohazard
  Python 3 MySQL Kullanımı dalaylama 0 815 23-12-2017, Saat: 17:39
Son Yorum: dalaylama
  Python'da Struct Kullanımı blueman 0 1,003 30-08-2017, Saat: 22:22
Son Yorum: blueman
  python da uygulama yaptık nasıl dağıtacağız ? dalaylama 0 1,120 07-08-2017, Saat: 22:27
Son Yorum: dalaylama

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Konuyu Okuyanlar:
1 Ziyaretçi

   
Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2018 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-2018 Tüm hakları saklıdır.