मैं अपनी विशाल कक्षा को दो में विभाजित करने की कोशिश कर रहा हूं; अच्छी तरह से, मूल रूप से "मुख्य" वर्ग और इतने की तरह अतिरिक्त कार्य, के साथ एक mixin में:पाइथन प्रकार बिना चक्रीय आयात के संकेत
# main.py
import mymixin.py
class Main(object, MyMixin):
def func1(self, xxx):
...
# mymixin.py
class MyMixin(object):
def func2(self: Main, xxx): # <--- note the type hint
...
अब, जबकि यह सिर्फ ठीक काम करता है, निश्चित रूप से MyMixin.func2 में टाइप संकेत काम नहीं कर सकता। मैं main.py आयात नहीं कर सकता, क्योंकि मुझे एक चक्रीय आयात मिलेगा और संकेत के बिना, मेरा संपादक (PyCharm) यह नहीं बता सकता कि self
क्या है।
पायथन 3.4 का उपयोग करके, यदि समाधान उपलब्ध हो तो 3.5 तक जाने के इच्छुक हैं।
क्या कोई तरीका है कि मैं अपनी कक्षा को दो फाइलों में विभाजित कर सकता हूं और सभी "कनेक्शन" रख सकता हूं ताकि मेरा आईडीई अभी भी मुझे स्वत: पूर्णता प्रदान कर सके & अन्य सभी उपहार जो इस प्रकार से जानते हैं?
मुझे नहीं लगता कि आपको आमतौर पर 'स्वयं' के प्रकार को एनोटेट करने की आवश्यकता होनी चाहिए, क्योंकि यह हमेशा मौजूदा वर्ग का उप-वर्ग बनने वाला होता है (और किसी भी प्रकार की जांच प्रणाली इसे समझने में सक्षम होना चाहिए खुद)। क्या 'func2'' func1' को कॉल करने का प्रयास कर रहा है, जिसे 'MyMixin' में परिभाषित नहीं किया गया है? शायद यह होना चाहिए (शायद 'सार तत्व' के रूप में, शायद? – Blckknght