Serdar Köylü'nün bahsettiği durumdan haberdarım ancak şu anki durumda benim
yazacağım modülü başka kullanıcılar da kullanacak ve herşeyin runtime
sırasında değiştirilmesini istemiyorum.Python'un mantığına ters onun
farkındayım ancak proje bunu gerektiriyor.

Mesela Serialazable gibi bir interface i Python tarafında

class Serializable:
    __metaclass__ = ABCMeta
    @abstractmethod
    def writeData(self,output):
        raise NotImplementedError
    @abstractmethod
    def readData(self,input):
        raise NotImplementedError

şeklinde kodladım. Bunu miras alacak classların readData ve writeData
metodlarını kendisine göre implemente etmesi gerekiyor. Bu şekilde biraz
daha istediğim yapıya yaklaşmış oluyorum.




24 Mayıs 2012 17:34 tarihinde Mehmet Özgür Bayhan <[email protected]>yazdı:

>
> Yazının geneli doğru olmakla beraber bir iki yerde ciddi hata var.İyice
> kafa karışıklığına yol açmaması için düzelme ihtiyacı duydum.Özellikle Emin
> demirci gibi Java tarafından gelenler için.
>
>
> 24 Mayıs 2012 16:45 tarihinde Serdar KÖYLÜ <[email protected]> yazdı:
>
> Fark, java ve python'un yaklaşımında gizli. Python yorumlayıcı, java
>> derleyici. Ve python runtime'da her şeyi değiştirmenize imkan
>> sağlıyor. Bu, teknik olarak, herşeyin zaten bir abstract class
>> olmasına yol açıyor. Şu olaya bakalım:
>>
>>
> Tam tersine bu dinamiklik hiçbir şeyin abstract class olarak
> kullanılamıyacağı sonucunu çıkartıyor.Şöyleki abstract class lar aynı
> zamanda sizin miras alacak olan sınıfınızın şekil şemalini
> belirler.Soyut(abstract) olmasının nedeni sonradan keyfi
> değiştirilebilirlikten değil tam tersine türeteceğiniz sınıfın şekil
> şemalini belirlerken işlevsellikten -kısmen- uzak olmasından
> kaynaklanıyor.
>
> Python'da veri tipi diye bir kavram yok, float, int, string vs. vs.
>> söz konusu değil.
>>
>>
> Aslında var gördüğüm kadarıyla.str(x) dediğiniz anda nesnenizin bellekteki
> şekil şemalini String yapısına uyacak şekilde biçimlendirmiş
> oluyorsunuz.Sadece bu şekil şemal dinamik olarak değiştirilebiliyor.
> Şöyleki:
> >>> a=3
> >>> type(a)
> <type 'int'>
> >>>
>
>
>
>> Ve evet, her şey aslında bir abstract class tanımıyla işliyor bu
>> şekilde.
>
>
> Tam tersine herşey bir abstract class mantığının çok uzağında belirli
> ayrılmış alanlar yerine heap mantığında çalışıyor.Bu da bir abstraction
> olayını imkansız hale getiriyor.Bu dilin güzel fakat aynı zamanda ihtiyaç
> duyulduğunda da kötü bir tarafı.
>
> Zaman zaman saç baş yoldurduğu oluyor (: Keza yapı tamamen denetiminiz
> dışına çıkabiliyor.
>
>
> _______________________________________________
> Linux-programlama mailing list
> [email protected]
> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>
>
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap