Sizi sınıflar ile tanışmadan önce, biraz da Python'un etki alanı kurallarından
        bahsetmem gerek. Sınıf tanımlamalarını tam olarak anlamak için etki ve isim
        alanlarının nasıl çalıştığını bilmeniz gerek. Bu konudaki bilgiler ileri
        seviyedeki her Python programcısı için yaralıdır.
      
Birkaç tanım ile işe koyulalım.
      
        Bir isim alanı isimler ile nesnelerin eşleşmesidir.
        Çoğu isim alanı şu anda Python sözlükleri olarak kodlanmışlardır, fakat bu
        hiçbir şekilde fark edilmez ve gelecekte değiştirilebilir. İsim alanlarına
        örnekler: yerleşik isimler kümesi (abs() gibi işlevler
        ve yerleşik istisna isimleri vs.), bir modül içindeki global isimler ve
        bir işlev çağrısındaki yerel isimler. Bir nesnenin özellikler kümesi de
        bir isim alanıdır. İsim alanlarına ilişkin bilinecek önemli şey farklı
        isim alanlarındaki isimlerin birbirileri ile hiçbir ilişkisi olmadığıdır.
        Örneğin, iki farklı modül karışıklık yaratmadan “maksimize” adlı birer
        işlev tanımlayabilir; kullanıcılar bu işlevleri önlerine modül adını
        ekleyerek kullanırlar.
      
        Bu arada, bir noktadan sonra yazılan her herhangi bir isim için 
öznitelik
        sözcüğünü kullanıyorum. Örneğin, 
z.real ifadesinde
        
real, 
z nesnesinin bir özniteliğidir.
        Modül içindeki isimlere atıflar da öznitelik atıflarıdır:
        
modulAdi.fonkAdi ifadesinde 
modulAdi
        bir modül nesnesidir ve 
fonkAdi bunun bir özniteliğidir.
        Bir modülün öznitelikleri ile içinde tanımlı global değişkenler aynı isim
        alanını paylaşırlar.
[88]
      
        öznitelikler salt okunur veya yazılabilir olabilirler. Yazılabilir oldukları
        durumda özniteliklere atama yapmak mümkündür. Modül öznitelikleri yazılabilirdir:
        modulAdi.sonuc = 42 gibi bir ifade kullanabilirsiniz.
        Yazılabilir öznitelikleri del deyimini kullanarak silmek de
        mümkündür. Örneğin del modulAdi.sonuc ifadesi
        modulAdi nesnesinden sonuc isimli özniteliği siler.
      
        Farklı anlarda yaratılan isim alanlarının farklı ömürleri olur. Yerleşik
        isimleri içeren isim alanı Python yorumlayıcısı çalıştırıldığında yaratılır
        ve asla silinmez. Bir modüle ait global isim alanı modül tanımı okunduğunda
        yaratılır ve genellikle yorumlayıcı çalıştığı sürece silinmez. Yorumlayıcının
        bir dosyadan veya etkileşimli olarak çalıştırdığı deyimler de
        __main__ isimli bir modüle ait kabul edilir ve bunların
        da kendi global isim alanı vardır. Yerleşik isimler de __builtin__
        isimli bir modülde bulunurlar.
      
        Bir işleve ait yerel isim alanı işlev çağırıldığında yaratılır ve işlevden
        dönüldüğünde veya işlev içinde ele alınmamış bir istisna gerçekleştiğinde
        silinir. Tabii ki özyinelemeli çağrıların herbiri kendi yerel isim alanına
        sahiptir.
      
        Bir etki alanı bir isim alanının doğrudan erişilebildiği bir
        metin bölgesidir. Burada “doğrudan erişilebilir” ifadesinin anlamı, yetersiz bir
        isim atfının isim alanında isim bulmaya teşebbüs etmesidir.
      
        Etki alanları statik olarak belirlenmelerine rağmen, dinamik olarak
        kullanılırlar. İcranın herhangi bir anında isim alanlarına doğrudan
        erişilebilen iç içe geçmiş en az üç etki alanı vardır: ilk aranan ve yerel
        isimleri içeren en iç etki alanı; en yakın olanından başlanarak aranan
        çevreleyen işlevlerin isim alanları; daha sonra aranan ve o andaki modülün
        global değişkenlerini içeren orta etki alanı; ve yerleşik isimlerin bulunduğu
        isim alanı olan en dış etki alanı (en son aranır).
      
        Eğer bir isim global olarak tanımlanmış ise tüm atıflar ve atamalar doğrudan
        modülün global isimlerini barındıran orta etki alanına giderler. Zaten,
        en iç etki alanının dışındaki tüm isimler salt okunurdur.
      
        Genellikle yerel etki alanı o an içinde bulunulan (program metninde) işlevin
        yerel isimlerine atıfta bulunur. İşlevlerin dışında yerel etki alanı global
        etki alanı ile aynı isim alanıdır: modülün isim alanı. Sınıf tanımlamaları
        ayrıca yerel etki alanı içerisine bir başka isim alanı daha eklerler.
      
        Etki alanlarının metne bağlı olarak belirlendiğini anlamak önemlidir. Bir
        modül içinde tanımlı bir işlevin global etki alanı o modülün isim alanıdır;
        nereden çağırıldığı ya da hangi farklı isim ile çağırıldığı bir fark yaratmaz.
        Diğer yandan, asıl isim araması icra anında dinamik olarak yapılır; ancak
        dilin tanımı “derleme” sırasında yapılan statik isim çözümlemeye doğru
        değişmektedir ve dinamik isim çözümlemeye güvenmemelisiniz! Örneğin, yerel
        değişkenler şu anda statik olarak belirlenmektedir.
      
        Python'a özgü bir tuhaflık da atamaların her zaman en iç etki alanına gitmesidir.
        Atamalar veri kopyalamaz; sadece nesnelere isimler bağlarlar. Aynı şey silme
        işlemleri için de geçerlidir: del x  ifadesi x'in
        yerel etki alanı tarafından atfedilen isim alanındaki bağını kaldırır.
        Aslında, yeni isimler yaratan tüm işlemler yerel etki alanını kullanırlar.
        İşlev tanımları ve import deyimleri modül veya işlev adını
        yerel etki alanına bağlarlar. Bir değişkenin global etki alanında bulunduğunu
        belirtmek için global deyimi kullanılabilir.