[Linux-programlama] Re: Python'da iç içe import nasıl yapılır ?

Onur Küçük onur at ozguryazilim.com.tr
21 Tem 2012 Cmt 19:44:58 EEST


On Sat, 21 Jul 2012 17:36:52 +0300
Mesut Taşçı <slackermesut at gmail.com> wrote:

> Hayvan ve Insan classlarının getYemek diye fonksiyonları var.
> Elimdede canlinin tipini tutan tipid adında bir değişkenim var.Ben her
> seferinde tipid ye göre ifleyip eger canlı hayvansa Hayvan classındaki
>  getYemek fonksiyonunu, eger insan ise Insan classındaki getYemek
> fonksiyonunu çağırmak yerine Canli classına tipid ile çalışan getYemek
> adında bir fonksiyon yazıyorum ve tipid kontrolunu Canli classındaki
> getYemek fonksiyonunda yapıyorum.
> 
> Kodu çalıştırdığımda import hatası yiyorum.

 İmport 'ların scope 'unu daraltabilirsiniz. Kod çalışacak ama fazlaca
içiçe / çembersel import / bağımlılık var. Kodunuzun genel yapısını
gözden geçirmenizde fayda var. 

 Bir de "is" ile yapılan kontrolleri string dışında kullanmamakta fayda
var, onun yerine "==" kullandım.

 diff -Nur py_circular-old//Canli.py py_circular/Canli.py
--- py_circular-old//Canli.py	2012-07-21 17:20:06.000000000 +0300
+++ py_circular/Canli.py	2012-07-21 19:37:36.892000765 +0300
@@ -1,14 +1,14 @@
 #!/usr/bin/env python 
 # -*- coding: utf-8 -*-
 
-import Insan
-import Hayvan
 
 class  Canli(object):
 	def getYemek(self,tipid):
-		if (tipid is 1):
+		if tipid == 1:
+			import Insan
 			mycanli=Insan.Insan()
 		else :
+			import Hayvan
 			mycanli=Hayvan.Hayvan()
 
 		return mycanli.getYemek()
diff -Nur py_circular-old//main.py py_circular/main.py
--- py_circular-old//main.py	2012-07-21 17:26:42.000000000 +0300
+++ py_circular/main.py	2012-07-21 19:37:28.483000253 +0300
@@ -7,4 +7,5 @@
 
 tipid=1 #insan
 c_canli=Canli.Canli()
-c_canli.getYemek(tipid)
+print "Canli yemeği %s" % c_canli.getYemek(tipid)
+


-- 
 Onur Küçük                                   Özgür Yazılım A.Ş. ~ >
 <onur.--.-.ozguryazilim.com.tr>      http://www.ozguryazilim.com.tr



Linux-programlama mesaj listesiyle ilgili daha fazla bilgi