SQLite ve Sınıflar Konusunda Anlamadığım Nokta

class music_info():
    def __init__(self):

        self.baglanti_olustur()

    def baglanti_olustur(self):

        self.baglanti = sqlite3.connect("MusicInfos.db")
        self.cursor = self.baglanti.cursor()
        query = "Create Table If not Exists müzikler (Şarkı TEXT,Sanatçı TEXT,Albüm TEXT,Şirket TEXT,Süre INT)"
        self.cursor.execute(query)
        self.baglanti.commit()

    def baglantiyi_kes(self):

        self.baglanti.close()

init konusu ile çok barışık değilim. Ancak şu şekilde yazıldığında anlıyorum:

class Sarkilar():
    def __init__(self,şarkı,sanatçı,albüm,şirket,süre):

        self.şarkı = şarkı
        self.sanatçı = sanatçı
        self.albüm = albüm
        self.şirket = şirket
        self.süre = süre

    def __str__(self):
        return "Şarkı İsmi: {}\nSanatçı: {}\nAlbüm: {}\nŞirket: {}\nSüre: {}\n".format(self.şarkı,self.sanatçı,self.albüm,self.şirket,self.süre)

music_info sınıfında yazılan “self.baglanti_olustur()” kısmının mantığını anlayamadım. karşısına herhangi bir değer girmedik. init fonksiyonunda hernagi bir değer girmedik.

Hemen altında olan “baglanti_olustur(self)” fonksiyonu ile aralarında bir ilişki var sanırım amar anlamadım. Çünkü “self.baglanti_olsutur()” ifadesini değiştirdiğim zaman PyCharm “baglanti_olustur(self)” fonksiyonu için hata veriyor. Bana aralarındaki ilişkiyi açıklayabilir misiniz?

Şu kaynaklardan faydalanabilirsiniz:

__init__ fonksiyonu çağrıldığında baglanti_oluştur fonksiyonunu çağırıyor. Dolayısıyla tanımlamalar yapılıyor. Keyfiniz isterse baglanti_oluştur fonksiyonunu silip içindeki her şeyi __init__ fonksiyonuna yazabilirsiniz. 2. koda çok benzer.

" self.baglanti_olustur() " ya da fonksiyonu yazmasam da SQLite’ı şu kod ile “init” fonksiyonun içinde bağlasam yine aynı mantık olur mu?

def baglanti_olustur(self):

    self.baglanti = sqlite3.connect("MusicInfos.db")
    self.cursor = self.baglanti.cursor()
    query = "Create Table If not Exists müzikler (Şarkı TEXT,Sanatçı TEXT,Albüm TEXT,Şirket TEXT,Süre INT)"
    self.cursor.execute(query)
    self.baglanti.commit()

İnceleyeceğim çok teşekkürler.

Evet olur. Hem de hiçbir fark olmaz. Ama program büyük boyutlara ulaştığında baglanti_olustur fonksiyonunu yazmak daha kullanışlı oluyor. baglanti_olustur daha okunaklı bir hâle getiriyor.

1 Beğeni

Tamamdır. Çok teşekkür ederim.