Python'da self, _init_ nedir?

MR_KIVIRCIK

Femtopat
Katılım
6 Şubat 2021
Mesajlar
11
Yer
Kutuplar
Öncelikle merhabalar. Python eğitimi alıyordum ve kafama bir şey takıldı. Bu self ve _init_ ne işe yarıyor. Açıklayabilecek biri var mıdır diye soracaktım.
 

ayalkin

Femtopat
Katılım
6 Mayıs 2020
Mesajlar
38
Sanırım sınıflar konusunu işliyorsun. Bende dilin uzmanı değilim onu bir önceden belirteyim de 😅
Self yaratmış olduğumuz sınıflarda bir değişken olarak kullanılıyor X veYa Y gibi düşünebilirsin. Peki neden self dersen eğer zamanla böyle kabul görmüş herkes bu şekilde benimsemiş. Bir başkası yazmış olduğun kodu okurken daha rahat algılıyor. Self yazmak zorunda değilsin istersen kivircik yazabilirsin 😄 ama Türkçe karakter kullanmamaya dikkat et yeter.
__init__ ise sınıfın içindeki fonksiyonlardan biri ama dikkat etmen gereken noktalardan birisi şu __init__ yazarken yan yana iki tane alt çizgi kullanıyoruz mesela __file__ yazarken de yan yana iki tane yazılıyor kural bu. Peki diğer önemli nokta ne dersen o da şu Python'da bir sınıf oluşturdun içindede birden fazla fonksiyon var. Sen bu sınıfı kabuka davet edip çağırdığında ilk yapılması gereken ne varsa hepsini __init__ içindeki kodlar sana sormadan yapar. Kelime anlamı ile bakıldığındada __init__ İngilizce in içine girmek içinde gibi algılanabileceği için. Sınıfın içine girildiğinde ilk ne yapılması lazım ise __init__ fonksiyonuna yazarsın. Bu arada __init__ kullanmak zorunda değilsin. Kullanmadan da sınıf oluşturabilirsin herhangi bir sorun olmaz. Self ve __init__ ile ilgili bir örnek vermek gerekirse yazdığım kodlardan küçük bir bölüm atayım sana.

Python:
class TinderBot():
     def __init__(self):
          args = ["hide_console"]
          chrome_options = Options()
          chrome_options.add_argument("--headless")
          self.browser = webdriver.Chrome("chromedriver.exe", service_args=args,)
          self.browser.maximize_window()
     def giris(self):
          self.browser.get('https://tinder.com')
          sleep(3)

Dıyelim ki elimizde bu şekilde bir kod var ve böylede devam edıyor. Bu kod parçasını da ıdlenin içine import yoluyla ekle deyip enter yaptığın anda __init__ kısmı çalışmaya başlar. Python dosyasının direkt üstüne gelip çift tıklasanda gene aynı sonucu alırsın... Ben bu kodu çalıştırdığımda kodun kendisi otomatik olarak chromu açıp gerekli en boy ayarlarını vb ayarları yapıp hazır hale gelip benim komut vermemi bekliyor sadece. Daha sonra TinderBot.giris() yazarak veya başka bir fonksiyonu çağırarak istediğimi yapabilirim.
Peki bu kodlarda ki self ne işe yarıyor dersen onu da özetleyeyim. Self sadece bir değişken.

Peki en önemli soru neden tinder bot örneği dersen idrak ettirmesi daha kolay daha dikkat çekici 😂

Umarım anlatabilmişimdir. Basit ve anlaşılır anlatmaya çalıştım. Dediğim gibi dilin uzmanı değilim hatalı veya eksik anlatmış olduğum yer varsa affola. Uyaran olursa bende yeni şeyler öğrenmiş olurum 😌
 

ersel1905

Femtopat
Katılım
11 Şubat 2021
Mesajlar
6
Öncelikle merhabalar. Python eğitimi alıyordum ve kafama bir şey takıldı. Bu self ve _init_ ne işe yarıyor. Açıklayabilecek biri var mıdır diye soracaktım.
__init__ : bir 'class' oluşturduğun zaman çağrılan ilk fonksiyondur. İçerisinde yapılan yer alan bazı 'ide' lerde otomatik olarak eklenen 'self' değişkeni ise oluşturduğun 'class' ın içerisinde yer alan fonksiyonların ve bu fonksiyonlara ait değişkenlerin bu 'class' ın bir parçası olduğunu ifade ediyor ve bu değişkenlere dışarıdan erişebiliyorsun.
Python:
class MyClass():
    def __init__(self, x,y):
        self.x = x
        self.y = y
        print("x= {}, y = {}".format(x,y))


class MyClass1():
    def __init__(self,x,y): #self koymazsan x'i self parametresi gibi algıladğını görebilirsin
        print("x= {}, y = {}".format(x,y))
   

ad = MyClass(5,6)
print(ad.x)#Kodu yazarken 'ad' yazdıktan sonra  koyduğun '.' ile bilrikte seçeneklerde göreceksin x ve y yi
print(ad.y)

ac =MyClass1(5,6)
print(ac.x)#kullandığın ide zaten sonra böyle bir şey olmadığını baştan söyleyecek
print(ac.y)

program çıktısı :
Kod:
> x= 5, y = 6
> 5
> 6
> x= 5, y = 6
Traceback (most recent call last):
  File "C:\Users\Lenovo\Desktop\vscodedeneme\Deneme.py", line 18, in <module>
    print(ac.x)
AttributeError: 'MyClass1' object has no attribute 'x'
 
KS
MR_KIVIRCIK

MR_KIVIRCIK

Femtopat
Katılım
6 Şubat 2021
Mesajlar
11
Yer
Kutuplar
Sanırım sınıflar konusunu işliyorsun. Bende dilin uzmanı değilim onu bir önceden belirteyim de 😅
Self yaratmış olduğumuz sınıflarda bir değişken olarak kullanılıyor X veYa Y gibi düşünebilirsin. Peki neden self dersen eğer zamanla böyle kabul görmüş herkes bu şekilde benimsemiş. Bir başkası yazmış olduğun kodu okurken daha rahat algılıyor. Self yazmak zorunda değilsin istersen kivircik yazabilirsin 😄 ama Türkçe karakter kullanmamaya dikkat et yeter.
__init__ ise sınıfın içindeki fonksiyonlardan biri ama dikkat etmen gereken noktalardan birisi şu __init__ yazarken yan yana iki tane alt çizgi kullanıyoruz mesela __file__ yazarken de yan yana iki tane yazılıyor kural bu. Peki diğer önemli nokta ne dersen o da şu Python'da bir sınıf oluşturdun içindede birden fazla fonksiyon var. Sen bu sınıfı kabuka davet edip çağırdığında ilk yapılması gereken ne varsa hepsini __init__ içindeki kodlar sana sormadan yapar. Kelime anlamı ile bakıldığındada __init__ İngilizce in içine girmek içinde gibi algılanabileceği için. Sınıfın içine girildiğinde ilk ne yapılması lazım ise __init__ fonksiyonuna yazarsın. Bu arada __init__ kullanmak zorunda değilsin. Kullanmadan da sınıf oluşturabilirsin herhangi bir sorun olmaz. Self ve __init__ ile ilgili bir örnek vermek gerekirse yazdığım kodlardan küçük bir bölüm atayım sana.

Python:
class TinderBot():
     def __init__(self):
          args = ["hide_console"]
          chrome_options = Options()
          chrome_options.add_argument("--headless")
          self.browser = webdriver.Chrome("chromedriver.exe", service_args=args,)
          self.browser.maximize_window()
     def giris(self):
          self.browser.get('https://tinder.com')
          sleep(3)

Dıyelim ki elimizde bu şekilde bir kod var ve böylede devam edıyor. Bu kod parçasını da ıdlenin içine import yoluyla ekle deyip enter yaptığın anda __init__ kısmı çalışmaya başlar. Python dosyasının direkt üstüne gelip çift tıklasanda gene aynı sonucu alırsın... Ben bu kodu çalıştırdığımda kodun kendisi otomatik olarak chromu açıp gerekli en boy ayarlarını vb ayarları yapıp hazır hale gelip benim komut vermemi bekliyor sadece. Daha sonra TinderBot.giris() yazarak veya başka bir fonksiyonu çağırarak istediğimi yapabilirim.
Peki bu kodlarda ki self ne işe yarıyor dersen onu da özetleyeyim. Self sadece bir değişken.

Peki en önemli soru neden tinder bot örneği dersen idrak ettirmesi daha kolay daha dikkat çekici 😂

Umarım anlatabilmişimdir. Basit ve anlaşılır anlatmaya çalıştım. Dediğim gibi dilin uzmanı değilim hatalı veya eksik anlatmış olduğum yer varsa affola. Uyaran olursa bende yeni şeyler öğrenmiş olurum 😌
__init__ : bir 'class' oluşturduğun zaman çağrılan ilk fonksiyondur. İçerisinde yapılan yer alan bazı 'ide' lerde otomatik olarak eklenen 'self' değişkeni ise oluşturduğun 'class' ın içerisinde yer alan fonksiyonların ve bu fonksiyonlara ait değişkenlerin bu 'class' ın bir parçası olduğunu ifade ediyor ve bu değişkenlere dışarıdan erişebiliyorsun.
Python:
class MyClass():
    def __init__(self, x,y):
        self.x = x
        self.y = y
        print("x= {}, y = {}".format(x,y))


class MyClass1():
    def __init__(self,x,y): #self koymazsan x'i self parametresi gibi algıladğını görebilirsin
        print("x= {}, y = {}".format(x,y))
   

ad = MyClass(5,6)
print(ad.x)#Kodu yazarken 'ad' yazdıktan sonra  koyduğun '.' ile bilrikte seçeneklerde göreceksin x ve y yi
print(ad.y)

ac =MyClass1(5,6)
print(ac.x)#kullandığın ide zaten sonra böyle bir şey olmadığını baştan söyleyecek
print(ac.y)

program çıktısı :
Kod:
> x= 5, y = 6
> 5
> 6
> x= 5, y = 6
Traceback (most recent call last):
  File "C:\Users\Lenovo\Desktop\vscodedeneme\Deneme.py", line 18, in <module>
    print(ac.x)
AttributeError: 'MyClass1' object has no attribute 'x'
İkinşze de çok teşekkür ederim konuyu anladım. Çok saolun.
Sanırım sınıflar konusunu işliyorsun. Bende dilin uzmanı değilim onu bir önceden belirteyim de 😅
Self yaratmış olduğumuz sınıflarda bir değişken olarak kullanılıyor X veYa Y gibi düşünebilirsin. Peki neden self dersen eğer zamanla böyle kabul görmüş herkes bu şekilde benimsemiş. Bir başkası yazmış olduğun kodu okurken daha rahat algılıyor. Self yazmak zorunda değilsin istersen kivircik yazabilirsin 😄 ama Türkçe karakter kullanmamaya dikkat et yeter.
__init__ ise sınıfın içindeki fonksiyonlardan biri ama dikkat etmen gereken noktalardan birisi şu __init__ yazarken yan yana iki tane alt çizgi kullanıyoruz mesela __file__ yazarken de yan yana iki tane yazılıyor kural bu. Peki diğer önemli nokta ne dersen o da şu Python'da bir sınıf oluşturdun içindede birden fazla fonksiyon var. Sen bu sınıfı kabuka davet edip çağırdığında ilk yapılması gereken ne varsa hepsini __init__ içindeki kodlar sana sormadan yapar. Kelime anlamı ile bakıldığındada __init__ İngilizce in içine girmek içinde gibi algılanabileceği için. Sınıfın içine girildiğinde ilk ne yapılması lazım ise __init__ fonksiyonuna yazarsın. Bu arada __init__ kullanmak zorunda değilsin. Kullanmadan da sınıf oluşturabilirsin herhangi bir sorun olmaz. Self ve __init__ ile ilgili bir örnek vermek gerekirse yazdığım kodlardan küçük bir bölüm atayım sana.

Python:
class TinderBot():
     def __init__(self):
          args = ["hide_console"]
          chrome_options = Options()
          chrome_options.add_argument("--headless")
          self.browser = webdriver.Chrome("chromedriver.exe", service_args=args,)
          self.browser.maximize_window()
     def giris(self):
          self.browser.get('https://tinder.com')
          sleep(3)

Dıyelim ki elimizde bu şekilde bir kod var ve böylede devam edıyor. Bu kod parçasını da ıdlenin içine import yoluyla ekle deyip enter yaptığın anda __init__ kısmı çalışmaya başlar. Python dosyasının direkt üstüne gelip çift tıklasanda gene aynı sonucu alırsın... Ben bu kodu çalıştırdığımda kodun kendisi otomatik olarak chromu açıp gerekli en boy ayarlarını vb ayarları yapıp hazır hale gelip benim komut vermemi bekliyor sadece. Daha sonra TinderBot.giris() yazarak veya başka bir fonksiyonu çağırarak istediğimi yapabilirim.
Peki bu kodlarda ki self ne işe yarıyor dersen onu da özetleyeyim. Self sadece bir değişken.

Peki en önemli soru neden tinder bot örneği dersen idrak ettirmesi daha kolay daha dikkat çekici 😂

Umarım anlatabilmişimdir. Basit ve anlaşılır anlatmaya çalıştım. Dediğim gibi dilin uzmanı değilim hatalı veya eksik anlatmış olduğum yer varsa affola. Uyaran olursa bende yeni şeyler öğrenmiş olurum 😌
Anladığıma göre _init_ bir işlemi kullanıcıya sormadan yapıyor. Doğru muyum?
 

ayalkin

Femtopat
Katılım
6 Mayıs 2020
Mesajlar
38
İkinşze de çok teşekkür ederim konuyu anladım. Çok saolun.

Anladığıma göre _init_ bir işlemi kullanıcıya sormadan yapıyor. Doğru muyum?
Doğrudur hocam öyle diyebiliriz. Bu durumu da değiştirmenin bazı yolları mevcuttur zaten ilerleyen dönemlerde aldığınız derslerde veya incelediğiniz kodlarda göreceksinizdir. Size en büyük tavsiyem hangi konuda olursa olsun uygulayarak daha kolay öğreneceksinizdir diğer türlü bütün bilgiler havada kalıyor.
 
Yukarı