Python Sınıflar ve Örnekler Hk

class Çalışan():
    zam=1.05
    def __init__(self,ad,soyad,maas):
        self.ad=ad
        self.soyad=soyad
        self.maas=maas
    def tamad(self):
        return "Adı:{}\nSoyadı:{}".format(self.ad,self.soyad)
    
    def arttır(self):
        self.maas=(self.maas*self.zam)
        print(self.maas)
    
personel1=Çalışan("Ali","Demir",2000)
personel1.zam=1.50
print(personel1.zam)

personel2=Çalışan("Duran","Veli",5000)
personel2.zam=1.1
print(personel2.zam)

personel2.arttır()

arkadaşlar bu örnekte yapılan işleme göre zam ortak olarak değişmezmiydi nasıl her örnek için farklı olabiliyor açıklar mısınız ?

Cunku her ornek icin farkli bir zam attribute’u yaratiyoruz. Olmasa:

>>> del personel1.zam
>>> print(personel1.zam)
1.05

Sinif degiskenine dogru erisme yontemi Çalışan.zam. Bunu disaridan saklamak istiyorsan zam_ayarla gibi bir setter metodu yaratabilirsin.

Ilgili kisim:
“A class has a namespace implemented by a dictionary object. Class attribute references are translated to lookups in this dictionary, e.g., C.x is translated to C.__dict__["x"] (although there are a number of hooks which allow for other means of locating attributes). When the attribute name is not found there, the attribute search continues in the base classes.”

1 Beğeni

Evet hocam id() ile kontrol ettim değer değişince farklı değer ile kopyalıyoruz değişmediği durumda kullanmaya devam ediyorum yanlışım var mı ?