27 Ağustos 2009 Perşembe

Yeni başlayanlar için Python problemi

Kod yazarken bazen yazdığınız şey olması gerektiği gibi çalışmaz, mantıklı bir sebep bulabilmek için saatlerce ararsınız, tararsınız, kodu şekilden şekile sokup yapboza çevirirsiniz, ama nafile. Hatta yazdığınız kodu o kadar basite indirgersiniz ki, artık "Yeni başlayanlar için ..." kitabının ilk sayfasında yer alabilecek hale gelir.

O anda artık bunun bir hata değil çok basit olduğu halde yorgunluk ve dikkatsizlikten mütevellit göremediğiniz bir şeyden olduğunu içten içe hissedersiniz, ama saç baş yolunma noktasına çoktan gelinmiştir. Tıpkı aşağıdaki Python kodunda olduğu gibi;


class C:

     def seta(self, a): pass

     def geta(self): return "a"

     x = property(geta,seta)


test = C()
test.x = "b"
print(test.x)


Kodun her durumda "a" çıktısı vermesi gerektiğini düşünürsünüz ama "b" verir. İşte böyle bir durumda yapılacak en iyi şey uzun bir ara verip, dingin bir kafa ve yeni bir bakış açısıyla dönmektir. Çünkü döndüğünüzde eksiği şıp diye bulacaksınızdır. :D

5 yorum:

  1. Başlık yazmayı unutmuşum, blogger'dan "nerede bunun başlığı kardeşim!" diye bir uyarı beklerdim, biraz geç fark ettim :)

    YanıtlaSil
  2. test.x="b" yi kaldır hep a versin işte ne uğraşıyon?

    YanıtlaSil
  3. class C nin object den inherit ettiğini belirtmeniz gerekmiyor muydu ?
    yani :
    class C(object):

    şeklinde başladığınızda sorun devam ediyor mu ?

    YanıtlaSil
  4. Evet Ömer bey dediğiniz gibi, yazıyı da bunu gördükten sonra yazmıştım zaten :)

    YanıtlaSil