Kapsülleme ve soyutlama hakkında konuştuk.
Peki ya OP'nin üçüncü ayağı?
Buna miras deniyor.
Ve kalıtım, yeni nesnelerin mevcut nesnelerin özelliklerini almasını sağlar.
Böylece sınıfları miras alabilirsiniz.
Bir örneğe göz atalım.
Sahip olduğumuz önceki kodu kaldıralım ve oyun örneğimize geri dönelim.
Yeni bir oyun yaratmak istiyoruz ve farklı türde kullanıcılarımız var.
Yani büyücü olabilecek, başka olabilecek, ne bileyim okçu olabilecek kullanıcılarımız var,
ancak tüm bu kullanıcıların bazı ortak işlevleri var ve büyücüler, elfler, okçular gibi alt kullanıcıların
her birinin bazı ortak paylaşılan işlevleri var, ancak yine de farklı belki saldırıları var.
Yani OP kullanarak aslında kalıtım yapabiliriz.
Örneğin, diyelim ki burada bir sınıf kullanıcımız var ve bu kullanıcının diyelim ki bir oturum açma işlevi olacak.
Veya oturum açma yöntemi bir kez daha kendini alacak ve sonra şimdilik burada bir tür oturum açtığımızı
varsayacağız.
Şimdilik sadece baskı blogu diyelim.
Ve çünkü bir oyunu oynamak için giriş yapmış olmaları gerekir.
Şimdi merak ediyor olabilirsiniz, ho, ho ho, burada init yöntemi nerede?
Önce çalıştırılacak bir init yöntemimiz olması gerekmez mi?
Evet, yapabiliriz, ancak kullanıcıya atamak istediğimiz herhangi bir değişkenimiz veya özelliğimiz yoksa, bu durumda
bir A yöntemine ihtiyacımız olmaz.
Şimdilik, kullanıcının bu oturum açma yöntemi dışında sahip olduğu hiçbir şeye ihtiyacımız olmadığını
söyleyeceğiz.
Şimdi bir sınıf sihirbazımız olması için bir grup alt sınıf oluşturmak istediğimizi varsayalım.
Ve şimdilik, boş bir sınıfımız olmaması için burada bir geçiş yapacağız, ancak yine de onu oluşturmamıza izin
verecek.
Ve diyelim ki bizim de bir sınıfımız var.
Archer, o da geçecek.
Oh.
Burada parantezler olduğundan emin olun.
Şimdi, olay şu.
İdeal olarak, tüm bu büyücüler ve okçular aynı zamanda kullanıcıdır.
Doğru.
Yani kullanıcılarımız var.
Ve bu kullanıcılar birden fazla forma sahip olabilir.
Büyücü olabilirler.
Okçu olabilirler.
Dev olabilirler.
Oyunumuzdaki tüm karakterler.
Ama diyelim ki hepsinin önce imzalanması gerekiyor.
Tüm bu kullanıcıların veya sınıfların da oturum açma erişimine sahip olduğundan nasıl emin olabiliriz?
Kalıtımı kullanabiliriz.
Peki miras işini nasıl yapacağız?
Oldukça kolay aslında.
Tek yaptığımız parantez içinde.
Miras almak istediğimiz ana sınıfı iletin.
Diyelim ki burada kullanıcı oldum.
Şimdi burada çalıştır'a tıklayalım.
Hava atmak yok.
Her şey iyi görünüyor.
Ve bu arada, buradaki yeşil çizgi bana girintinin dördün katı olmadığını söylüyor çünkü Python'da
girinti dört olmalıdır.
Yani bunu yapabiliriz.
Ama ben okuması daha kolay olsun diye daha küçük tutmayı seviyorum.
Tamam.
Şimdi burada bir sınıf oluşturalım.
Bir sihirbaz yaratacağım ve sonra şöyle diyeceğim.
Sihirbazı'nı seçin ve bu sihirbaz sınıfını çalıştırın.
Şimdi, burada bir baskı yaparsam ve diyelim ki baskı sihirbazı yaparsam.
Çalıştır'a tıklarsam.
Sihirbaz nesnesinin oluşturulduğunu görüyorum.
Peki ya oturum açmazsam?
Anlıyorum.
Evet, aslında orada.
Oturum açıp Çalıştır'a tıklarsam.
Hey, giriş yaptım.
Ne kadar havalı değil mi?
Bu işlevi kullanıcı sınıfından miras aldım.
Ve bu gerçekten çok güçlü çünkü artık sihirbazımı genişletebiliyorum.
Doğru.
Diyelim ki bu sihirbazın bir init'i var.
Yöntem.
Sihirbaz oluşturulduğunda çalıştırılacak olan.
Ve bir tane alacağız.
İsim.
Ve elde ettiğimiz güç.
Ve burada self name'i eşit name'e ve ardından self dot power'ı eşit power'a atayacağız.
Ayrıca başka bir yöntem daha ekleyelim.
Buna saldırı deniyor.
Ve bu saldırı yöntemi basitçe şöyle bir F dizesi yazdıracaktır.
Saldırıyorum.
Gücü.
Öz güç diyelim.
Ve sonra aynısını Archer için yapacağız.
Bu kodu kopyalayacağım.
Buraya yapıştır.
Ve okçunun bir adı olacak.
Ve diyelim ki güç yerine, diyelim ki sahip olduğunu söyleyelim.
Ok sayısı.
Ve ok sayısı.
Aldığı yeni özellik olacak.
Ve sonra saldırı iyi olacak, oklarla saldıracak.
Ve sonra oklarımız kalacak.
Sol oklar sadece ok sayısını söyleyecek ve her saldırınızda okların azaldığı eğlenceli
bir şey yapabiliriz.
Tamam.
Şimdi bunu elde ettiğimize göre, görebilmeniz için bunu biraz daha küçültelim.
Al bakalım.
Şimdi bunu elde ettiğimize göre, ilk sihirbazı örnekleyelim.
ile.
Diyelim ki Merlin, gücü 50 olsun.
Ve sonra okçu.
Örnekleneceğiz.
Robin'in yaptığı gibi, diyelim ki 500 ok ya da 100 ok yapalım.
Yani şimdi büyücü ve okçu.
Şey, giriş yapacaklar.
Ama aynı zamanda saldırıya da sahip olacaklar, ancak bu saldırı kendi bireylerine özgü olacak.
Sınıflar.
Ayrıca farklı özelliklere sahip olacaklardır.
Bir göz atalım.
Eğer Wizard Dot'u yapacak olsaydım.
Bayım. Büyücü.
Bir nokta.
Şimdi diyeceğiz ki.
Saldırın.
Ve izin verin geri döneyim.
Benim kod zekam.
Birkaç hatamız olduğunu göreceğiz.
İşte.
Ne diyor?
Undefined name self ve bunun nedeni self'i parantez içinde unutmamdır, böylece her zaman ilk parametreyi self olarak vermemiz
gerektiğini hatırlarsınız.
Eğer aşağı kaydırırsak Büyücü Nokta'ya gideriz, ismimiz, gücümüz ve saldırımız olduğunu görürüz.
Eğer buraya saldırırsam ve koşarsam.
Gördüğünüz gibi 50'lik güçle saldırıyorum.
Eğer yaparsam, okçu tek noktadan saldıracak.
Bu durumda, oklarla saldıracağım.
Oklar 100'de kaldı.
Ancak bunların her ikisi de aynı zamanda işaret işlevine sahiptir.
Ne kadar havalı değil mi?
Bu, mirasın gücüdür.
Kodumuzu kuru tutuyoruz, değil mi?
Kodun her ikisinin de paylaştığı kısmını soyutluyoruz, ancak daha sonra her birinin ihtiyaçlarına göre bazı
şeyleri değiştiriyoruz.
Örneğin, Wizard üzerinde Archer'dan farklı yöntemlere ve özelliklere sahip olabilirim, ancak aynı zamanda onların
sahip olduğu ortak bir kullanıcı işlevselliğine de sahip olabilirim.
Ve bu şekilde kodumuzu düzenli ve temiz tutar.
Şimdi net görebilmeniz için yakınlaştırmayı geri getirelim.
Şimdi, bu miras fikri gerçekten çok güçlüdür.
Buradaki kilit nokta, bir ana sınıfımız ve çocuk sınıflarımız olmasıdır.
Şimdi, bazen bu alt sınıflara alt sınıflar veya türetilmiş sınıflar denir çünkü bunlar user sınıfının alt sınıflarıdır
veya user sınıfından türetilmiştir.
Bir sonraki videoda bu konuyu biraz daha inceleyelim.