2011-10-20 25 views
7

Ben bir proje inşa ediyorum ve aşağıdaki sorun haline çalıştırmak içinde muhafaza kodu. Semantik, aynı modülde birlikte gitmeli ve onun kod oldukça kötü bakımını yapar hatlarınınPython:</p> <p>Ben uygulayan birçok alt sınıflar, her biri kod yaklaşık 250 satırdan oluşması: modüllerinin

from mymodule import SubclassA, SubclassB 

Ama sonra benim modül dosyası vardır binlerce bunları almak istiyorum. Şimdi daha kolay bakımını yapmak için ayrı bir dosyada her sınıf var ama böyle kullanmak zorunda:

from subclassa import SubclassA 
from subclassb import SubclassB 

bu hiç mantıklı değildir ve gerçekten korkunç.

Zarif bir çözüm var mı? Eğer değilse, hangisi daha iyi bir çözümdür?

+1

Belki de bir pakete ihtiyacınız var: http://docs.python.org/tutorial/modules.html (6.4) – danihp

+0

"Kodunu oldukça kötü yapan binlerce satır,"? Gerçekten mi? Niye ya? Asıl sorunun ne olacağı konusunda daha spesifik olabilir misiniz? –

cevap

5

from subclassa ... ithalatını, ikinci listenizde gösterildiği gibi her zaman paketinizin __init__.py ürününe ekleyebilirsiniz. Ardından, ilk listenizde yazdıklarınızdan doğrudan paketinizde kullanılabilirler.

+0

Çok teşekkürler! İşe yaradı. Sonunda '__init __. Py' dosyasında içe aktarılan bir paket oluşturdum. –

1

İkinci çözümü, ayrı dosyalarla birlikte tercih ederim. İthalat o kadar da kötü değil.

Sizi çok rahatsız ediyorsa, bunları başka bir dosyada kapsülleyebilir ve daha sonra bu dosyadan ikinci sınıfları içe aktarabilirsiniz. Böylece ana içeriğiniz ilk çözüm gibi görünecek, ancak mymodule dosyasının tek içeriği ikinci çözümdeki kod olacaktır.

from mymodule import SubclassA, SubclassB 

bana eğer bildirin:

import SubclassA, SubclassB 

ve ardından diğer projeler içinde sadece bu modülden bu sınıfları alabilirsiniz:

0

Sen kendi dosyalarından mymodule modülü içinde her iki sınıfları alabilirsiniz Aradığın şey bu.