Python'da yapabileceğiniz çoklu kalıtım hakkında konuşalım.
Şimdi, kullanıcı büyücümüz ve okçu sınıflarımız olduğunu hatırlayın.
Şu anda o oyunu inşa etmeye çalışıyoruz.
Bu kodun bir kısmını temizleyelim.
Artık init fonksiyonuna ihtiyacımız olmayacak.
Burada sadece kullanıcı var.
Kullanıcıdan miras alan sihirbazımız ve ayrıca kullanıcıdan miras alan okçumuz var.
Ancak yeni bir karakter yaratmak istersek ve bu karaktere bir sınıf denirse ne olur?
Diyelim ki adı hibrit Borg ya da bizim adımız.
Biliyorum.
Ama şöyle bir şey var.
Hibrit Borg özel bir karakter türüdür çünkü büyücülerin sahip olduğu güçlere, yani saldırıya sahiptir.
Okçuların sahip olduğu güce, yani Çek oklarına sahiptir.
Ve sırf eğlence olsun diye, burada da reklam yapalım.
Ve sadece dört koşunun gerçekten hızlı koştuğunu söyleyeceğiz.
Tamam.
Bu yüzden bu melez Borg'un tüm bu yöntemlere sahip olmasını istiyoruz.
Bunu yapabilir miyiz?
Evet, yapabiliriz.
Tek yapmamız gereken önce Büyücü sonra da Okçu demek.
İstediğimiz kadar parametre verebiliriz.
Çoklu miras olarak Büyücü ve Okçu'dan miras alıyoruz.
Diyelim ki burada hiçbir şey yapmayacağım ve sadece pas tuşuna basacağım.
Diyelim ki melez Borg'u örneklendirirsem.
Biri hibrit olacak.
Borg sınıfı onu örneklendirir.
Artık bunların hepsini kullanabilirim.
Kontrol edelim.
Diyelim ki HP bir nokta çalışması yazdırdı.
Bunu yapabilir miyim?
Ve yine, küçük bir yazım hatası.
Hibrit Borg olduğundan emin olalım, hibrit tahta değil.
Umarım bu videodan sıkılmamışsınızdır.
Pekala, bir hata alıyorum.
Gerekli iki konumsal argüman eksik.
İsim ve güç.
Pekala, çünkü.
Bu şeyleri geçirmemiz gerekiyor.
Doğru.
Bu parametreleri kabul eder.
Tamam.
Diyelim ki bir ismin şöyle olmasını istiyoruz.
Borghi ve Eğer Bunu Çalıştırırsam 50 olma gücü.
Tamam.
Gerçekten hızlı koşuyor gibi görünüyor.
Çalıştır.
Archer'dan miras alabildim.
Peki ya Çek okları?
Çalıştır'a tıklarsam.
Oh.
Melez Borg'u anladım.
Nesnenin öznitelik okları yoktur.
Şimdi.
Nedenmiş o?
Çünkü teknik olarak biz.
Önce Büyücü'den miras alınır, sonra Okçu ve Büyücü kabul eder.
İsim ve güç.
Ama hiçbir zaman okları, ismi ve okları vermedik.
Hmm.
Peki bunu nasıl çözebiliriz?
Bir şey deneyelim.
Diyelim ki buraya oklar ekledik.
Bu çalışma ile 100.
Hmm.
Bu işe yaramıyor, değil mi?
Bu, çoklu kalıtımla ilgili zor bir konudur ve bazı programlama dillerinin aslında çoklu kalıtıma izin
vermemesinin nedenidir.
İşler biraz zorlaşabilir çünkü kafanızın içinde bu sınıfların nasıl uygulandığını anladığınızdan
ve hiçbir şeyin üzerine yazmadığımızdan emin olmanız gerekir.
Bizim durumumuzda, kodumuzu biraz karmaşık hale getirebiliriz.
Peki burada ne yapabiliriz?
Burada belki şöyle bir şey yapabilirim.
İçinde tanımla diyebilirim.
Bu kendini alır.
Bir isim, bir güç alacak.
Ve ayrıca.
Oklar.
Ve son olarak burada, Okçu olarak da adlandıracağımızı söyleyebilirim.
İçinde nokta var.
Bu da satışları düşürecek ve daha sonra isme geçecek.
Ve oklar.
Yani bunu çalıştırırsam.
Peki, 100 okunu buraya ekleyelim ve çalıştır'a tıklayalım.
Al bakalım.
Oklar şimdi çalışıyor.
Şimdi de büyücüye yaptığımız saldırının işe yarayıp yaramadığını kontrol edelim.
Eğer saldırırsak.
Ve Çalıştır'a tıklayın.
Aman Tanrım.
Artık hibrit nesnemizin gücü yok.
Yani bir kez daha, güce sahip olabilmemiz için bunu kopyalamamız ve diyelim ki bu sefer sihirbazın kendisini
kopyalayıp ona güç vermemiz gerekecek.
Çalıştır'a tıklarsam.
Tamam.
Saldırı işe yarıyor.
Aero'yu kontrol etmeye geri dönelim.
Bir şey kırmadığımızdan emin ol.
Buna tıklarsam, bu da çalışır.
Ve son olarak, oturum açmaya ne dersiniz?
Pekala, işe giriş.
Giriş yapıldı.
Tamam.
Aman Tanrım.
Bu çok fazlaydı.
Ve aslında bu sorunu çözmenin birkaç yolu var.
Yine de size göstermek istediğim şey, birden fazla miras aldığınızda işlerin karmaşıklaşabileceğidir.
Her ne kadar adım adım ilerlesek de, iş yerindeki ekibinize gelen ve bu kodu anlamaya
çalışan bir yazılımcı olduğunu hayal edin.
Buraya oldukça fazla mantık ekledik ve işler gittikçe daha karmaşık hale geliyor ve kafanızdaki her şeyi
takip etmek zorlaşıyor.
İşte bu nedenle çoklu kalıtım, gerçekten çok güçlü olduğu şeylerden biridir, ancak
büyük güçle birlikte büyük sorumluluk da gelir çünkü giderek daha fazla karmaşıklık yaratıyoruz.
Yine, bazı programlama dillerinin aslında çoklu kalıtım yapmanıza izin vermemesinin nedenlerinden biri.
Ve bu arada, kafanızı daha da karıştıracağım.
Bir sonraki videoda ise Maro adlı bir şeyden bahsedeceğiz.
Ve bu, birden fazla miras konusunda neden dikkatli olmanız gerektiğine dair bir başka harika örnek olacak.
Onda görüşürüz.
Güle güle.