Sınıf İçerisinde Yapılan Değişiklik Gözükmüyor

Nesne Tabanlı Programlama kısmının 4. parçasındaki örnekte bir liste içerisindeki ismi ç1.isim_değiştir() fonksiyonuyla değiştirebiliyorum. Liste içindeki personeli personel_görüntüle() ile sorgulayınca da istediğim değişiklik gerçekleşiyor. Ancak örnek olarak ç1’i ilk olarak ‘Ahmet’ olarak tanımladıysam fonksiyon aracılığıyla ‘emre’ yapsam bile ç1.isim komutu verdiğimde ‘Ahmet’ çıktısı alıyorum, nedeni ne olabilir?

class Çalışan():
    personel = []

    def __init__(self,isim):
        self.isim = isim
        self.personele_ekle()

    def personele_ekle(self):
        self.personel.append(self.isim)
        print("{} adlı kişi personel listesine eklendi.".format(self.isim))

    @classmethod
    def personeli_görüntüle(cls):
        print("eErsonel listesi: ")
        for kişi in cls.personel:
            print(kişi)

    def isim_değiştir(self,yeni_isim):
        kişi=self.personel.index(self.isim)
        self.personel[kişi]= yeni_isim
        print("Yeni isim: ",yeni_isim)

Merhaba,

Yukarıdaki fonksiyon aslında self.isim niteliğini değiştiren bir fonksiyon değil. Bu fonksiyonda self.isim niteliğinin değeri ne olarak belirtilmişse, self.personel listesinde o değerin sıra numarası sorgulanır ve o sırada yer alan değer değiştirilir. Dolayısıyla, bu fonksiyon ikinci kez çağrıldığında, nesne oluşturulurken değeri belirlenen self.isim niteliğinin değeri self.personel listesinde yer almayacağı için ValueError hatası yükseltilir.

self.personel[kişi] = yeni_isim ifadesinin yer aldığı satırdan sonraki satıra, aşağıdaki kod satırını yazarsanız, self.isim niteliği de değişmiş olur.

self.isim = yeni_isim