Python'da self kullanımı hakkında

Merhaba ben nesne tabanlı kodlama kısmında self komutunu anlamadım okudum defalarca okudum başka sitelere baktım ancak anlamadım bana kısaca anlatabilecek var mı takıldım kaldım şimdi

Class icinde bir fonksiyon:

class Foo:
    def bar(a, b, c):
        print(a, b, c)

instance uzerinden cagrilirsa:

inst = Foo()
inst.bar(1, 2)

ilk parametre (a) instance’in kendisi (inst) oluyor:

inst = Foo()
Foo.bar(inst, 1, 2)
1 Beğeni

Merhaba.

self bir komut değildir.

Şu örneği inceleyin:

class Sınıf:

    def __init__(self, yazı):
        self.yazı = yazı

    def yaz(self):
        print(self.yazı)


örnek = Sınıf("Merhaba Dünya")

#bu üçü aynı:
örnek.yaz()
Sınıf.yaz(örnek)
type(örnek).yaz(örnek)

Aslında herhangi bir örnek.metod() ifadesi type(örnek).metod(örnek) ile aynı işe yarıyor, buradaki self parametresi de örnek değişkeninin tuttuğu nesne oluyor.

Böyle bir şey yapmamızın sebebi de her örneğin kendine ait özelliklere (attribute) sahip olabilmesi, herhangi bir metod içerisinde self.nitelik = 1 dediğimizde başka metodlar içerisinde de self.nitelik şeklinde erişebileceğimiz self'e ait olan bir nitelik tanımlamış oluyoruz.

self de normal bir parametre sadece, Python’da bir gelenek olmasının dışında metodların ilk parametresinin ismini self yapmamızın bir sebebi yok.

1 Beğeni