2014-09-23 62 views
3

我正在嘗試編寫class,我希望如果該類的初始輸入值不遵守特定類型,則會引發異常。例如,我會用except TypeError返回一個錯誤。我不知道應該怎麼做。我第一次寫class嘗試如下:引發TypeError異常,導致類中的輸入值不正確

class calibration(object): 
     def __init__(self, inputs, outputs, calibration_info, interpolations=2): 
      try: 
      self.inputs=inputs 
      except TypeError 

      self.outputs=outputs 
      self.cal_info=calibration_info 
      self.interpol=interpolations 

我想,如果inputs值不是一個字符串,那麼它會引發錯誤消息。我會很感激任何幫助。

+0

這可能有所幫助:http://stackoverflow.com/questions/152580/whats-the-canonical-way-to-check-for-type-in​​-python。 – nofinator 2014-09-23 00:24:17

+0

如果看到錯誤的類型,則可能需要調用'raise TypeError'。 – nofinator 2014-09-23 00:24:54

回答

6

它在2.x和3.x之間有些不同,但使用isinstance來確定類型,然後在不滿意的情況下引發異常。

class calibration(object): 
    def __init__(self, inputs, outputs, calibration_info, interpolations=2): 
     if not isinstance(inputs, basestring): 
      raise TypeError("input must be a string") 

Python2區分ascii和unicode字符串 - 「basestring」轉換它們兩者。在python3中,只有unicode字符串,而用'str'代替。

+0

我使用'python 2.7',所以'basestring'對待它們是相同的,對吧? – Dalek 2014-09-23 00:31:47

+0

@Dalek - 是的basestring會匹配他們兩個。 – tdelaney 2014-09-23 00:34:16

+0

'six.string_types'與'basestring'有什麼區別? – Dalek 2014-09-23 00:45:45

相關問題