এটি সত্যিই কেবল ব্যক্তিগত পছন্দ এবং এটি আপনার পাইথন মডিউলগুলির বিন্যাসের সাথে করতে হবে।
ধরা যাক আপনার কাছে একটি মডিউল আছে erikutils। দুটি উপায়ে এটি একটি মডিউল যা দরকার তা যদি হয় আপনি একটি ফাইল নামের erikutils.py আপনার এর উপর sys.pathঅথবা আপনি একটি তালিকা নামের erikutils আপনার এর উপর sys.pathএকটি খালি সঙ্গে __init__.pyএটা ভিতরে ফাইল। তারপর ধরুন আপনাকে বলা মডিউল একটি গুচ্ছ দাও fileutils, procutils, parseutilsএবং আপনাকে সেই অধীনে উপ-মডিউল হতে চান erikutils। সুতরাং আপনি fileutils.py , procutils.py , এবং parseutils.py নামে কিছু .py ফাইল তৈরি করেন :
erikutils
__init__.py
fileutils.py
procutils.py
parseutils.py
হতে পারে আপনি কয়েক ফাংশন যে শুধু নাগরিক নয় আছে fileutils, procutilsঅথবা parseutilsমডিউল। এবং আসুন আমরা আপনাকে একটি নতুন মডিউল নামে পরিচিত বলে মনে করেন না miscutils। এবং, আপনি ফাংশনটি এভাবে কল করতে সক্ষম হতে চাই:
erikutils.foo()
erikutils.bar()
না করে বরং
erikutils.miscutils.foo()
erikutils.miscutils.bar()
সুতরাং erikutilsমডিউলটি একটি ডিরেক্টরি নয়, একটি ফাইল নয়, আমাদের __init__.pyফাইলটির ভিতরে এটির কার্যকারিতা নির্ধারণ করতে হবে ।
জাঙ্গোতে, আমি সবচেয়ে ভাল উদাহরণটি ভাবতে পারি django.db.models.fields। সমস্ত জাজানো * ফিল্ড ক্লাসগুলি ডিজেঙ্গো / ডিবি / মডেল / ক্ষেত্র ডিরেক্টরিতে __init__.pyফাইলটিতে সংজ্ঞায়িত করা হয়েছে । আমি অনুমান করি তারা এগুলি করেছে কারণ তারা সমস্ত কিছুকে অনুমানীয় জ্যাঙ্গো / ডিবি / মডেল / ফিল্ডসপিপি মডেল হিসাবে ছড়িয়ে দিতে চান না , তাই তারা এটিকে কয়েকটি সাবমোডিয়ালে বিভক্ত করেছেন ( সম্পর্কিত.পি , ফাইলসপি , উদাহরণস্বরূপ) এবং তারা ক্ষেত্রের মডিউলে নিজেই তৈরি * ক্ষেত্রের সংজ্ঞা আটকে রেখেছিল (তাই, )।__init__.py