Instance method Hk

Selamlar sevgili üstatlar, aşağıda sesli veya sessiz harflerin sayısını belirten bir program var.

Bu program ;

class HarfSayacı:

    def __init__(self):

        self.sesli_harfler = 'aeıioöuü'

        self.sessiz_harfler = 'bcçdfgğhjklmnprsştvyz'

        self.sayaç_sesli = 0

        self.sayaç_sessiz = 0

    def kelime_sor(self):

        return input('Bir kelime girin: ')

    def seslidir(self, harf):

        return harf in self.sesli_harfler

    def sessizdir(self, harf):

        return harf in self.sessiz_harfler

    def artır(self):

        for harf in self.kelime:

            if self.seslidir(harf):

                self.sayaç_sesli += 1

            if self.sessizdir(harf):

                self.sayaç_sessiz += 1

        return (self.sayaç_sesli, self.sayaç_sessiz)

    def ekrana_bas(self):

        sesli, sessiz = self.artır()

        mesaj = "{} kelimesinde {} sesli {} sessiz harf var."

        print(mesaj.format(self.kelime, sesli, sessiz))

    def çalıştır(self):

        self.kelime = self.kelime_sor()

        self.ekrana_bas()

if __name__ == '__main__':

    sayaç = HarfSayacı()

    sayaç.çalıştır()

Burada anlamadığım kısım ise ;

def ekrana_bas(self):
    **sesli, sessiz = self.artır()**

sesli, sessiz = self.artır()'a baktığım zaman "(method) artır: () → tuple[int, int] " diyor. Ben bu kısmı gerçekten anlayamadım.

Yani tamam şöyle bir şey söz konusu pythonda örneğin ; a , b = 1, 2
Ama yukarıdaki ne? :S Nereyi kaçırdım acaba diye geriye bakıyorum böyle bir örnekte bulamadım. Yardımcı olur musunuz?

artır bir metotmuş (yani bir sınıfa bağlı fonksiyon), hiç parametre almıyor () ve 2-tuple döndürüyor iki eleman da tam sayı tuple[int, int]. () → tuple[int, int] kısmı type hint sayesinde anlaşılmış; bu konu forumda da şurada konuşulmuş https://forum.yazbel.com/t/bu-isaret-ne-ise-yariyor/10236. (Son yanıttaki Bir şey döndürmeyeceksek de herhangi bir şey yazmamıza gerek yok. tam olarak doğru olmayabilir.)

1 Beğeni

Yo hocam ben anlayamadım farklı biraz basit bir ornek verme şansınız var mi

Type hint kullanmadım heralde daha önce ama deneyeyim,

def f():
    return (-273, +80)

diye bir fonksiyon var. Python için yeterli bir fonksiyon yani syntax uygun bu haliyle. Ama type hinting yanlısı olanlar bununla yetinmeyelim diyorlar; fonksiyonun ne alıp verdiğinin tiplerini de yazalım daha açık olsun diyorlar:

def f() -> tuple[int, int]:
    return (-273, +80)

(3.9+ lazım direkt tuple ve int diyebilmek için; öbür türlü typing modülünden alırsınız). Gördüğünüz gibi fonksiyonun “fonksiyonu” değişmedi hala aynı işi yapıyor. Ne yapıyor? Parametre almaksızın geriye 2 adet tam sayıdan oluşan bir demet döndürüyor. Ama artık ikinci yazım ile bu daha açık olarak belirtiliyor.

Başka bir örnek:

def tekrar_et(ne: str, kac_kere: int) -> str:
    return ne * kac_kere

Parametrelerin ilkinin string olması bekleniyor diğerinin tam sayı. Geriye de yine bir string döndürülüyor.

Üstteki linkte de yazdığı üzere bu Python dilinin zorladığı ve kontrol ettiği bir şey değil; yukarıya (her ikisine de!) -> list[str, bool] da yazsanız kodu çalıştırabilirsiniz hata almadan. Ama mypy felan kullanırsanız o kontrol ediyor.

Cook Cook teşekkür ederim tamamdir şimdi biraz daha iyi anladım eve geçtiğimde pratik yapayım bununla alakalı ben bolca :slight_smile: teşekürler hocam