2016-04-01 20 views
5

मैं एक वर्ग है कि इस तरह दिखता है:अजगर प्रकार इशारा - विधि रिटर्न वर्तमान कक्षा की एक सूची

Traceback (most recent call last): 
    File "/Users/simon.hughes/GitHub/analytics-py-careerpathing/careerpathing/data/employment_history.py", line 8, in <module> 
    class CareerTransition(object): 
    File "/Users/simon.hughes/GitHub/analytics-py-careerpathing/careerpathing/data/employment_history.py", line 17, in CareerTransition 
    def from_file(fname: str, verbose : bool = False)->List[CareerTransition]: 
NameError: name 'CareerTransition' is not defined 

: जब मैं उस वर्ग का दृष्टांत करने की कोशिश

class CareerTransition(object): 
    def __init__(self, title_from: str, title_to: str)->None: 
     self.title_from = title_from # type: str 
     self.title_to = title_to  # type: str 

    @staticmethod 
    def from_file(fname: str, verbose : bool = False)->List[CareerTransition]: 
     #Do some stuff 
     pass 

मैं इस त्रुटि मिलती है मौजूदा वर्ग का संदर्भ देने वाले सामान्य प्रकारों के संदर्भ में टाइप एनोटेशन का उपयोग करना संभव नहीं है? स्पष्टीकरण के लिए (जैसा कि यह स्पष्ट नहीं हो सकता है) यह उस त्रुटि को फेंक रहा है क्योंकि कक्षा अभी तक परिभाषित नहीं है। क्या इसके चारों ओर एक रास्ता है?

+0

मेरे पास कई लोग हैं जो मुझे बताते हैं कि पायथन टाइपिंग संकेत नहीं करता है (केवल उनकी टिप्पणियों को हटाने के लिए)। आपको समय बचाने के लिए - http://stackoverflow.com/questions/32557920/what-are-type-hints-in-python-3-5 – Simon

+0

मैंने लोगों को भी बताया है कि आप एक सूची टाइप कैसे नहीं करते हैं, यह है यदि आप एक सामान्य सूची को एक प्रकार के संकेत के रूप में निर्दिष्ट कर रहे हैं - यहां देखें: http://blog.jetbrains.com/pycharm/2015/11/python-3-5-type-hinting-in-pycharm-5/ – Simon

उत्तर

1

इससे भी अच्छे तरह से ठोस वर्ग के रूप में @chepner द्वारा कहा बारे में शाब्दिक __class__ उपयोग करने के लिए है। पूरी बात इस तरह दिखेगी:

@staticmethod 
    def from_file(fname: str, verbose : bool = False)-enter code here>List['__class__']: 
    #Do some stuff 
    pass 
5

एक स्ट्रिंग एक आगे संदर्भ के लिए शाब्दिक का उपयोग करें: तो

@staticmethod 
def from_file(fname: str, verbose : bool = False)->List['CareerTransition']: 
    #Do some stuff 
    pass 
+0

शानदार। आप विश्वास नहीं करते कि कितने लोगों ने मुझे यह बताने की कोशिश की कि पाइथन प्रकार संकेतों का समर्थन नहीं करता है या मैं टाइपिंग गलत सूची (सूची) टाइप कर रहा था। – Simon

+0

@ सिमॉन कुल दो लोगों ने कहा कि। :) – idjaw

+2

ठीक है सच। यह अभी भी लोग हैं :) – Simon

संबंधित मुद्दे