Tüm açıklamalar Python Belgeleri The Python Eğitimi'nde bulunabilir.
İlk hatanız için <type 'exceptions.NameError'>: name 'outer_var' is not defined
. Açıklama şu şekildedir:
Yöntemlerin içinden veri özniteliklerine (veya diğer yöntemlere!) Atıfta bulunmak için bir kısaltma yoktur. Bunun aslında yöntemlerin okunabilirliğini artırdığını görüyorum: bir yönteme göz atarken yerel değişkenleri ve örnek değişkenlerini karıştırmanın hiçbir şansı yoktur.
The Python Tutorial 9.4'ten alıntı
İkinci hatan için <type 'exceptions.NameError'>: name 'OuterClass' is not defined
Bir sınıf tanımı normal olarak bırakıldığında (uçtan), bir sınıf nesnesi oluşturulur.
The Python Tutorial 9.3.1'den alıntı
Yani denediğinizde inner_var = Outerclass.outer_var
, Quterclass
henüz yaratılmadı, bu yüzdenname 'OuterClass' is not defined
İlk hatanız için daha ayrıntılı ama sıkıcı bir açıklama:
Sınıfların kapsayıcı işlevlerin kapsamlarına erişimleri olmasına rağmen, sınıf içinde yuvalanmış koda yönelik kapsayıcı kapsamlar olarak hareket etmezler: Python, başvurulan isimleri kapsayan işlevleri arar, ancak hiçbir zaman kapsayıcı sınıfları aramaz. Diğer bir deyişle, bir sınıf yerel bir kapsamdır ve yerel kapsamları çevreleyen erişime sahiptir, ancak daha fazla iç içe geçmiş kod için çevreleyen bir yerel kapsam işlevi görmez.
alıntı Learning.Python (5) .Mark.Lutz