Merih Forum Programlama ve yazılım algoritmalar programlama python Django Python super() Methodu ve Django'da Kullanımı

  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
Python super() Methodu ve Django'da Kullanımı

 
#1

Merhaba arkadaşlar,
Uzun zamandır yazmadığım bloguma yeni bir yazı ekleyeyim istedim iş yoğunluğundan fırsat bulunca.Bu yazı da hemen her dilde kullanılan 

Kod:
super()

 fonksiyonundan bahsedicem.Ve bu fonksiyonun Python ve Django'da kullanım şekliyle ilgili birkaç basit kod satırı yazmayı planlıyorum.Yazıyı okumadan önce 

Kod:
Object Oriented

 yapısına hakim olmak gerektiğini belirtmeden geçmeyeyim.Eğer hakim değilseniz tutorialspointte ki bu yazıyı inceleyebilirsiniz: https://www.tutorialspoint.com/python/python_classes_objects.htm

Kod:
super()

 Fonksiyonu Ne İş Yapar?

Bu fonksiyon, bir class'a inheritance olarak verdiğimiz başka bir class'ta ki fonksiyonu override etmek isteyip aynı zaman da fonksiyonun kendisinden de vazgeçemediğimiz zamanlarda yardımımıza koşuyor.Yani şöyle ki; eliniz de bir class var, fonksiyonlarından birisini override etmek istediniz fakat sadece birkaç şeyi değiştirip fonksiyonun kendisini tekrar çalıştırmak istediniz.
Kod:
super()

 bu konuda yardımınıza koşuyor ve Django'da da çok sık kullandığım için üzerine bir blog yazmak istedim.Basit bir örnek ile şu şekilde açıklayabilirim;

Kod:
class Foo(object):
   def __init__(self):
       print "worked Foo Class"
   def bar(self):
       print "worked foo bar function"



class Dummy(Foo):
   def bar(self):
       print "worked dummy bar"
       super(Dummy, self).bar()


dummy_class = Dummy()
dummy_class.bar()


Çıktısı ise şu şekilde;
worked Foo Class
worked dummy bar
worked foo bar function


Bu basit kod blogunu çalıştırdığınız da yapacağı işlemleri adım adım anlatayım.Dummy Class'ına Foo Class'ını inheritance olarak verdik ve 
Kod:
bar()

 fonksiyonunu override ettik.Burada önce Foo'nun 

Kod:
__init__()

 fonksiyonu çalışacak object oriented kuralları gereği ve sonra Dummy'nin içinde ki 

Kod:
bar()

fonksiyonu.Bu fonksiyon da çalıştıktan sonra tekrar miras aldığı Foo class'ının 

Kod:
bar()

 fonksiyonunu çalıştırıyor 

Kod:
super()

 fonksiyonu sayesinde.

Django Rest Framework'te ki Yaygın Kullanımı
Django Rest API yazarken serializer katmanında çok sık kullandığım için böyle bir örnekte vermek istedim.En basit haliyle bir ModelSerializer Class'ında ki 
Kod:
create()

 fonksiyonu üzerin de kullanımı için basit bir örnek kod paylaşayım.

Kod:
from rest_framework import serializers

class FooSerializer(serializers.ModelSerializer):
   created_by = serializers.ReadOnlyField(read_only=True)

   class Meta:
       model = Foo
       exclude = ()

   def create(self, validated_data):
       validated_data['created_by'] = "ahmetkotan"

       super(FooSerializer, self).create(validated_data)

Burada da ModelSerializer'ın için de bulunan 
Kod:
create()

 fonksiyonunu override ettik basit bir örnekle.Yaptığı işlem ise kısaca; 

Kod:
create()

 methodu çalıştığı zaman gelen değerlerin içinden 

Kod:
created_by

 field'ının değerini "ahmetkotan" olarak değiştirip çalışması gereken 

Kod:
create()

 methodunu tekrar çalıştırıyor.Klasik tabirle araya girme işlemi de denilebilir.

Umarım faydalı olmuştur, iyi çalışmalar..



Bul
Alıntı


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Visual Studio'da Django soğanolsunmu 0 1,880 16-11-2018, Saat: 00:11
Son Mesaj: soğanolsunmu
  Django Uygulamalarımızı uWSGI ve Nginx ile Google Cloud Platformdan nasıl yayınlarız? poyraz 0 2,872 01-12-2017, Saat: 23:42
Son Mesaj: poyraz
  DJANGO İÇİN AMAZON ÜCRETSIZ SUNUCULARI xray 0 2,211 01-12-2017, Saat: 22:54
Son Mesaj: xray
  Django Hızlı ve Basit Site Yayınlama – Djeasy xray 0 2,848 01-12-2017, Saat: 21:03
Son Mesaj: xray
  Ubuntu 16.04 Üzerine Django 1.10.1 Nasıl Yüklenir? efsane 0 2,231 12-11-2017, Saat: 19:23
Son Mesaj: efsane

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Bu konuyu görüntüleyen kullanıcı(lar):
1 Ziyaretçi

   
Türkçe Çeviri: Emre KRMN, Kodlayanlar MyBB, © 2002-2024 MyBB Group.  



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