Gelişmiş Python Geliştirme Kursu
Bölüm
>
Seviye
Matematik Modülleri
Kod İncelemesi
Amaç
Kod introspection kullanarak, tavan arasında saklanmış eski eşyaları inceleyip bunların ne olduklarını ve nasıl kullanıldıklarını öğrenin.
Tavan arasında nadiren kullanılan bir ofis bulunmaktadır ve uzun süredir unutulmuş bazı değerli eşyaları içeren birkaç eski sandık vardır. Aksi belirtilmedikçe veya bir not bilgi sağlamadıkça, bazen sahada toplanan öğelerin ya da sabitlerin tanımlanması oldukça zor olabilmektedir. Dahası, belirli bir nesneyle neler başarılabileceğini veya özelliklerinin neler olduğunu belirlemek zor olabilir. Bunu aşmak için Kod Introspection kullanabiliriz.
Kod Introspection, belirli kod parçalarını inceleyip bunların bazı özelliklerini belirtmemizi sağlar. Bunun için temel python koduyla paketlenmiş dört (4) yerleşik introspection fonksiyonunu kullanacağız: type() , id() , repr() , dir() ve help(). Bunlar aşağıdaki gibi çalışır:
type(): Fonksiyon, argüman olarak verdiğiniz nesnenin hangi türde olduğunu bildirir. Örneğin, bir değişkeni argüman olarak verirseniz, fonksiyon nesneyi bir değişken olarak tanımlar.id(): Python’da oluşturulan her nesnenin, kod içindeki benzersiz kimliğini belirleyen kendine has bir id’si vardır. Bir nesneyi bu fonksiyonun argümanı olarak eklediğinizde, nesnenin benzersiz id’sini döndürür.repr(): Bir string olmayan değeri string’e dönüştürür; verileri okunabilir bir forma sokmak için faydalıdır.dir(): Fonksiyonun sahip olduğu tüm öznitelikleri gösterir; belirli bir nesne türüyle neler başarılabileceğini bilmek için yararlıdır.help(): Python kaydında bulunan, belirli bir nesne, fonksiyon, sınıf vb. hakkında mevcut tüm bilgileri gösterir.
Ek olarak, display() isimli yeni bir async fonksiyonumuz var. Bu fonksiyon, read() fonksiyonuna benzer ancak kod introspection fonksiyonları gibi dinamik veriler göstermenize olanak tanır. Söz dizimi şu şekildedir: await player.display( -data-). Tüm bu fonksiyonlar, Methods kullanırken ve yeni fonksiyonları içe aktarmaya başladığımızda olduğu gibi, özelliklerini belirlemek istediğimiz herhangi bir kodu analiz etmemiz için faydalı olacaktır.
Bu fonksiyonları, tavan arasında saklanan eşyaları tanımlamak ve kataloglamak için kullanacağız. Başlamak için, kırmızı halının üzerindeki X işaretinden başlayarak renkli halıların üzerindeki X işaretlerine doğru ilerleyin. Bu alanda üç (3) sabit bulunmaktadır: red_container , green_container ve blue_container; bu sabitler, her renkli halıya karşılık gelen sandıklardaki konteynerleri temsil eder.
Her X işareti için, sandığa dönün ve sandıkları açmak için open() fonksiyonunu kullanın, ardından sandıktan almak için ilgili renkli halıya ait sabiti kullanarak collect() fonksiyonunu çalıştırın. Sandıktaki sabitin türünü belirlemek için type() introspection fonksiyonunu kullanın; elde edilen çıktı ham veridir ve bunu string’e dönüştürmek için repr() fonksiyonunu kullanın. Fonksiyonları ve sabiti birleştirerek oluşan stringi göstermek için speak() fonksiyonunu kullanın, örneğin: player.speak(repr(type(red_container))). Ardından, içeriği doğrudan tanımlamak için speak() fonksiyonunu sabit ile birlikte kullanın, örneğin: player.speak(red_container).
Üç (3) sabit toplanıp introspection ve tanımlama işlemlerinden geçirildikten sonra, masanın önündeki açık X işaretine doğru ilerleyin. item_id_red , item_id_green ve item_id_blue adlarında üç değişken oluşturun; bunlar, topladığınız her sabitin id numarasını saklamak için kullanılacaktır. Sabitin benzersiz kimlik numarasını almak için, nesneyi argüman olarak ekleyerek id() introspection fonksiyonunu kullanın. Değişkenin adı ile sabit ismini şu formatta eşleştirin: item_id_red = id(red_container). Bu işlemi üç (3) sabit ve değişken için de tekrarlayın.
Üç (3) değişken tamamen doldurulduktan sonra, hepsini item_list adında bir listede saklayın ve masadaki notta yer aldığından emin olmak için açık X işaretinin üzerinde display() fonksiyonunu kullanın, örneğin: await player.display(item_list).
Liste kaydedildikten sonra, masa karşısındaki mor halının üzerindeki koyu X işaretine doğru ilerleyin. Burada, listenin sahip olduğu öznitelikleri belirlemek için dir() fonksiyonunu kullanacağız; ancak çıktı ham veri olduğundan göstermek biraz zor olabilir. Bunun için, veriyi okunabilir bir string’e dönüştürmek amacıyla repr() fonksiyonunu kullanırız. item_attributes adında bir değişken oluşturun ve elde edilen stringi şu şekilde saklayın: item_attributes = repr(dir(item_list)). Son olarak, masadaki notta yer aldığından emin olmak için display() fonksiyonunu kullanın.
White carpet üzerindeki koyu X işareti için, dir() ile yaptığınız işlemi help() ile tekrarlayın; bu, nesne üzerindeki tüm dokümantasyon kullanımını özetleyecektir. item_help adında bir değişken oluşturun ve elde edilen stringi şu şekilde saklayın: item_help = repr(help(item_list)). Son olarak, seviyeyi tamamlamak amacıyla masadaki notta yer aldığından emin olmak için read() fonksiyonunu kullanın.