2014-09-23 59 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

相关问题