मैं python3 में ऑब्जेक्ट उन्मुख मॉडल के बाद मेरी कंपनी के लिए एक जटिल अनुप्रयोग विकसित कर रहा हूं। एप्लिकेशन में कई संकुल और उप-पैकेज होते हैं, प्रत्येक - ज़ाहिर है - जिसमें __init__.py मॉड्यूल होता है।क्या यह सामान्य, अमूर्त कक्षाओं के लिए पैकेज के __init__.py मॉड्यूल का उपयोग करने के लिए पाइथोनिक है?
मैंने ज्यादातर उन __init__.py मॉड्यूल का उपयोग उन पैकेजों के लिए सामान्य वर्ग घोषित करने के लिए किया था, जिनका उद्देश्य केवल उनके संबंधित पैकेज के लिए सार टेम्पलेट्स के रूप में उपयोग किया जाना है।
मेरा प्रश्न अब है: क्या यह __init__.py मॉड्यूल का उपयोग करने के लिए "अच्छा"/"सही"/"पायथनिक" तरीका है? या मैं अपने जेनेरिक कक्षाओं को कहीं और घोषित करूंगा?
mypkg.__init__.py
:
class Foo(object):
__some_attr = None
def __init__(self, some_attr):
self.__some_attr = some_attr
@property
def some_attr(self):
return self.__some_attr
@some_attr.setter
def some_attr(self, val):
self.__some_attr = val
mypkg.myfoo.py
:
एक उदाहरण देने के लिए, के एक पैकेज mypkg
मान लें
from . import Foo
class MyFoo(Foo):
def __init__(self):
super().__init__("this is my implemented value")
def printme(self):
print(self.some_attr)
क्या आपका वर्तमान दृष्टिकोण किसी भी सिरदर्द का कारण बनता है? कुछ ठीक कर रहा है जो ठीक काम कर रहा है क्योंकि कोई इसे मान सकता है कि यह अवांछित है। – timgeb
मैंने हमेशा '__init __। Py' के बारे में सोचा, यदि किसी भी चीज़ के लिए उपयोग किया जाता है, मॉड्यूल प्रारंभिक (जैसे मॉड्यूल-वाइड स्टेट ऑब्जेक्ट्स इत्यादि बनाना) और मॉड्यूल के सार्वजनिक इंटरफ़ेस को प्रस्तुत करने के लिए। इसके बारे में सोचने का एक और तरीका, मुझे लगता है कि, '__init __। Py' मॉड्यूल ऑब्जेक्ट के लिए समान भूमिका निभाता है जब मॉड्यूल को' __init __() 'विधि के रूप में आयात किया जाता है, जो कि एक नव निर्मित उदाहरण के लिए करता है कक्षा। –
@timgeb कोई भी तकनीकी या अवधारणात्मक समस्या नहीं है। आवेदन ठीक काम करता है। फिर भी मैं अजगर के लिए नया हूं और अब पीईपी का पालन करने के लिए सामान साफ करना चाहता हूं। @ सिलसरे तो फिर आपका प्रस्ताव क्या है? क्या मैं अमूर्त कक्षाओं को कुछ मॉड्यूल 'abstract.py' या 'templates.py' में रखूंगा? –