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:
int topla(int a, int b);
Java'da böyle bir mesele söz konusu. Ama python'da:
def topla(a, b):
Ama python'da böyle. Fark nerde, açıkca, ne fonksiyonun döndüreceği
şeyin, ne de parametrelerin veri tipi yok. Bu önemli bir fark.
Python'da veri tipi diye bir kavram yok, float, int, string vs. vs.
söz konusu değil.
Bu yüzden, python'da prototip kavramı söz konusu olmuyor. Bu da
haliyle abstract class vs. gibi meseleleri anlamsız hale getiriyor.
Ama ilginçlik bu noktadan sonra artıyor. Şimdi Topla fonksiyonuna
bakalım, altta neler dönüyor mesela:
def topla(a, b):
sonuc = a + b
return sonuc
Şimdi bu böyle olmuyor, python bunu şöyle anlıyor.
sonuc = a.__add__(b)
bu da mesela:
def __add__(self, b):
v = b.__str__()
Ve evet, her şey aslında bir abstract class tanımıyla işliyor bu
şekilde. Python'da veri tipleri yerien, herşeyin bir nesne olduğu bir
yapı sözkonusu. Yani, herşey bir nesne. Ve nesnelerden yukarda her
"class", aslında o abstract asıl nesnelerden türemiş bir diğer nesne
oluyor.
Sorun, pythonun bu yaklamaşını anlayamamış olmakta. Önce bunu kavramak
gerekiyor.
2012/5/22 emin demirci <[email protected]>:
> Anladım, Şu and ABC dökümanlarını okuyorum aradığım şeye benziyor.
>
> Teşekkürler
>
> 22 Mayıs 2012 21:49 tarihinde Mehmet Özgür Bayhan <[email protected]>
> yazdı:
>
>> Değişir.Python OOP olmasına rağmen OOP strict bir dil değil.Moduler
>> yapısıda var.
>>
>> 22 Mayıs 2012 21:47 tarihinde emin demirci <[email protected]> yazdı:
>>
>>> Benimde ilk fikrim mimariyi tam olarak aktaramayacağım konusundaydı ama
>>> yinede listeden bir görüş almak istedim.
>>>
>>> Serialization ve iletişim konusunda bir problemim yok şu an için ancak
>>> ilerleyen aşamada Ömer Fadıl Usta'nın da dediği gibi json gibi standarda
>>> geçilme planı var.
>>>
>>> Peki python tarafında mimariler sadece kalıtım kullanılarak mı
>>> oluşturuluyor ?
>>>
>>>
>>> 22 Mayıs 2012 21:35 tarihinde Ömer Fadıl USTA <[email protected]> yazdı:
>>>
>>>> sunucu kodlarında düzenleme yapabiliyorsanız java kısmındaki
>>>> serialization kısmını json kullanacak şekilde
>>>> ayarlarsanız python tarafında veriyi deserialize etme konusunda
>>>> sıkıntı yaşamazsınız.
>>>>
>>>>
>>>> 2012/5/22 Mehmet Özgür Bayhan <[email protected]>:
>>>> > Abstract class ve interface gibi kavramlar pythona özgü kavramlar
>>>> > değiller.Keza python multiple inheritince a izin veriyor.
>>>> >
>>>> > Sorun şu ki soket iletişiminde python ve java arasında serialization
>>>> > dan
>>>> > kaynaklanacak problemlerden dolayı sıkıntılar yaşayabilirsiniz.
>>>> >
>>>> > Sadece abstract class konusunda şurada kabaca anlatılan metaclass
>>>> > kavramı
>>>> > var ki yaklaşım açısından pek ilintili değiller.
>>>> >
>>>> > Deneyimlerim ve şu ana kadar gördüklerim bu yönde.
>>>> >
>>>> > Yapıları tam olarak aynı şekilde python a geçirebileceğinden pek de
>>>> > emin
>>>> > değilim açıkçası...
>>>> >
>>>> > 22 Mayıs 2012 21:14 tarihinde emin demirci <[email protected]>
>>>> > yazdı:
>>>> >>
>>>> >> Merhabalar,
>>>> >>
>>>> >> Python ile bir client uygulaması geliştiriyorum.Server tarafı Java
>>>> >> ile
>>>> >> geliştirilmiş ve Java clientinin kodları elimde mevcut.
>>>> >>
>>>> >> Client uygulaması soket üzerinden objeleri serialize edip java
>>>> >> server'a
>>>> >> gönderiyor , gelen cevabı da de-serialize edip kendi içerisinde
>>>> >> işliyor.
>>>> >>
>>>> >> Şu anda serialization/de-serialization kısmını kodladım. Ancak
>>>> >> python
>>>> >> bilgim yetersiz olduğundan kod mimarisi açısından problemler
>>>> >> yaşıyorum.
>>>> >>
>>>> >> Java clientinde olan mimariyi python client'da kurmaya çalısıyorum
>>>> >> ancak
>>>> >> abstract class, interface gibi kavramların python karşılıklarını
>>>> >> bulamadığım
>>>> >> ve büyük mimarilerin python da nasıl uygulandığını bilmediğim için
>>>> >> sıkıntı
>>>> >> oluyor.
>>>> >>
>>>> >> Sizlerden ricam bana mimari ve ileri seviye nesne yönelimli
>>>> >> programlama
>>>> >> hakkında yardımcı olabilecek döküman/kitap veya kod parçası
>>>> >> paylaşabilirmisiniz ?
>>>> >>
>>>> >> Teşekkürler,
>>>> >>
>>>> >> Emin.
>>>> >>
>>>> >>
>>>> >>
>>>> >> _______________________________________________
>>>> >> 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
>>>> >
>>>>
>>>>
>>>>
>>>> --
>>>> Ömer Fadıl USTA
>>>> http://www.bilisimlab.com/
>>>> _______________________________________________
>>>> 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
>>>
>>
>>
>> _______________________________________________
>> 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
>
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php