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

  • Toplam: 0 Oy - Ortalama: 0
  • 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..



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
  Visual Studio'da Django soğanolsunmu 0 691 15-11-2018, Saat: 23:11
Son Yorum: soğanolsunmu
  Django Uygulamalarımızı uWSGI ve Nginx ile Google Cloud Platformdan nasıl yayınlarız? poyraz 0 2,018 01-12-2017, Saat: 22:42
Son Yorum: poyraz
  DJANGO İÇİN AMAZON ÜCRETSIZ SUNUCULARI xray 0 1,416 01-12-2017, Saat: 21:54
Son Yorum: xray
  Django Hızlı ve Basit Site Yayınlama – Djeasy xray 0 1,506 01-12-2017, Saat: 20:03
Son Yorum: xray
  Ubuntu 16.04 Üzerine Django 1.10.1 Nasıl Yüklenir? efsane 0 1,481 12-11-2017, Saat: 18:23
Son Yorum: efsane

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Konuyu Okuyanlar:
1 Ziyaretçi

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



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