2017-06-02 10 views
5

में एकाधिक प्रकारों के साथ एनोटेशन टाइप करें मैं सार वर्ग के साथ पाइथन के type annotations का उपयोग कर प्रयास कर रहा हूं। मेरे __init__ समारोह इस तरह दिखता है:** kwargs

from abc import ABCMeta 

class SomeClass(object, metaclass=ABCMeta): 
    def __init__(self, *args, **kwargs): 
     print("Initiating %s object.", self.__class__.__name__) 

     self.username = kwargs['data'] 
     assert isinstance(self.username, str) 

     is_premioum = kwargs.get('premioum', False) 

     self.money_investmant = kwargs.get('investmant') 
     if isinstance(self.money_investmant, str): 
      self.money_investmant = float(self.money_investmant) 

आप देख सकते हैं, kwargs प्रकार- float, bool और str के कई संख्या से तर्क हो सकता है।

def __init__(self, *args, **kwargs: Union[bool, str, float]) -> None: 

लेकिन मेरे PyCharm आईडीई मुझे अलर्ट:

अब, मैं समारोह के लिए प्रकार एनोटेशन, कि इस तरह दिखता है लिखने के लिए कोशिश कर रहा हूँ

प्रकार छोड़कर 'अभिन्न', मिल गया 'str' के बजाय

और:

बूल में 'get' संदर्भ नहीं मिला। str | नाव '

Am मैं कुछ गलत कर?

मैं कैसे kwargs के लिए प्रकार एनोटेशन लिखना चाहिए अगर यह कई प्रकार से तर्क होता है?

उत्तर

2

पाइचर्म के लिए समस्या ट्रैकर पर this bug और this bug देखें। यह स्पष्ट रूप से PyCharm के चेकर के साथ एक मुद्दा है; mypy (पायथन के लिए एक अन्य प्रकार का चेकर) जब मैं समान कोड निष्पादित करता हूं तो शिकायत नहीं करता है।

वहां पहले से ही इसके लिए एक ठीक है और, यह जाहिरा तौर पर उपलब्ध in build 171.2014.23 है। तब तक, मुझे लगता है कि Any चेकर को शिकायत रोकने के लिए अस्थायी कामकाज के रूप में पर्याप्त होगा।

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