Tekrar hoş geldiniz.
Bir önceki videoda büyük bir boo boo yaptığımızı gördük.
Yani, ismi yazdık ve konuştuk.
Ve şimdi sınıfımız için harcadığımız tüm o sıkı çalışma bu olayla geçersiz kılındı.
Yani, elbette, yeni bir nesne oluşturursak.
Koşacağız ve konuşacağız ama şu anda birinci oyuncu tamamen işe yaramaz.
Adı ve konuşması yoktur.
Sadece Boo yazıyor.
Tamamen işe yaramaz.
Python'da public ve private kavramları vardır ve bu soyutlama tartışmamızla ilgilidir.
Soyutlamanın arkasındaki fikir, bilgiyi gizlememiz ve yalnızca kullanıcının ilgilendiği şeylere
erişim vermemizdir.
Doğru.
Yani ideal olarak, init'e erişimimiz olmamalı.
İdeal olarak, diyelim ki isim ve h'yi değiştirememeliyiz, çalıştıramamalıyız veya değiştirememeliyiz,
çünkü oyunumuzda bir oyuncu karakteri yarattığımızda, umarım oyuncu ismini veya yaşını rastgele değiştirebilir.
Ve belki de sadece 18 yaş ve üzeri olan oyunumuza gizlice gir.
Peki sınıfımızda özel bir değişken oluşturabilir miyiz?
Şey, olay şu.
Bazı diller, örneğin Java gibi bir dilde özel değişkenlere sahip olmamıza izin verir.
Aslında bir niteliğin bu şekilde özel olduğunu söyleyebilirim ve bu şekilde sahip olduğum gibi ona erişemeyeceğim ve değiştiremeyeceğim.
Ancak Python'da gerçek gizlilik, gerçek özel değişkenler yoktur.
Peki bunu nasıl aşacağız?
Yapacağımız şey, alt çizgi adı veya alt çizgi H yapmaktır.
Şimdi.
Bu herhangi bir özel güç sağlar mı?
Hayır, bu sadece programcılar olarak, Python programcıları olarak belirlediğimiz bir kuraldır, hey,
eğer kodumuzda alt çizgi görürsek, bu büyük olasılıkla bunun özel bir değişken olması gerektiği anlamına gelir.
Böylece onu kullandığımda ve konuştuğumda, diyelim ki alt çizgi isim, alt çizgi H.
Ve bunu yorumlayalım.
Çalıştır'a tıklarsam.
Bunu çalıştırmak zorundayım çünkü artık bu bir yöntem.
Çalıştır'a tıklayalım.
Adım Andre ve 100 yaşındayım.
Hepsi işe yarıyor.
Ancak bunların üzerine yazmaya çalışırsam ve Çalıştır'a tıklarsam.
Oh, ve şimdi artık bir yöntem olmadığı için, speak'i kaldıralım ve run'a tıklayayım.
Bu hala çalışıyor.
Bunun nedeni, dediğim gibi, gerçek özel değişkenlerin olmamasıdır.
Programcılar olarak, alt çizginin buna dokunmamanız gerektiği anlamına geldiğine karar verdik.
Lütfen buna dokunma.
Hâlâ kötü olabilir ve böyle bir şey yapabilirsiniz.
Ama size önceden haber veriyorum, eğer altını çizerseniz bu değiştirilmemeli, bu
özel olmalı.
İşte Python'da gizliliğe bu şekilde ulaşıyoruz.
Hepimiz bu küçük şeyi gizli tutalım diye anlaştık.
Yani bir metodu veya niteliği özel tutmak isterseniz, önüne bir alt çizgi koymanız yeterlidir, ancak
bu bir garanti değildir.
Peki ya bu çift alt çizgi başlangıcı?
Yine, bu çok kısa bir süre sonra bahsedeceğimiz bir şey, ancak buna dunder yöntemi deniyor.
Yani, Python'da yerleşiktir.
Ve genellikle kendi Dunder yöntemlerimizi asla yazmayız.
Asla çift alt çizgi yazmayız.
Bunu yaz.
Bu çift alt çizgi ve bunlardan birçoğunun Python'da özel bir anlamı vardır.
Ve bu şekilde adlandırılmalarının nedeni, hey, eğer değişkeniniz için çift alt çizgi yazıyorsanız,
çok yanlış bir şey yapıyorsunuz demektir.
Bir şeyin üzerine yazmak üzeresiniz.
Dolayısıyla, bir kez daha, bu çift alt çizgi, insanların buna gerçekten dokunmamanız veya her veri türünde bunu değiştirmemeniz
gerektiğini bilmelerini sağlamak için bir kuraldır.
Bir liste diyelim.
Eğer nokta koyarsam, aşağı kaydırdığınızda bunu göreceksiniz.
Bu dunder yöntemlerinden çok var.
Yine, hakkında konuşacağımız bir konu ama bunlar sizi bilgilendirmek için burada.
Alt çizgi gibi bir şey yapıyorsanız bunların üzerine yazmayın.
Altını çiz, bilmiyorum, doktor, böyle.
Bu çok kötü.
Bunu değiştirmeye ve beş kişiye atamaya çalışmayın.
Dolayısıyla bu özel alan fikri Python için önemlidir.
Birçok şeyin üzerine yazabilsek de, bu kötü bir uygulamadır.
Ama konuyu soyutlamaya geri getirelim.
Buradaki fikir, bu kodu soyutlamaktır ve özel nitelikler gibi bu uygun kuralları kullanarak değiştirilebilmesine
ve geçersiz kılınabilmesine rağmen, bazı şeyleri soyutlayabiliriz, ancak yine de kullanıcının
kullanabileceği her şeyin kodumuzu bozmayacağından emin oluruz.
Bir sonrakinde görüşürüz.
Güle güle.