我接收带有GPS数据的UDP数据包,并用它们构造位置对象。 有时,GPS丢失卫星信号,但仍发送UDP包,没有任何有价值的数据。我希望Position构造函数在这个失败的情况下给我一个'None'对象。所以,我可以检查是否处理这个职位。像这样:
frameGPS = giveMeTheFrame()
position1 = Position(frameGPS)
if (position1 is None): don't process position1
else: process position1
这样做对吗? 如果是这样,我如何实现这个init?在
你可以用不同的方法来处理这个问题。通过实现
__bool__
发布的答案也是一个非常好的选择!在为了提供另一种方法:
根据你对什么是垃圾数据,什么是有效数据的评论。假设您接收有效字符作为坐标。为了简单起见:
N
,S
,E
,W
一种方法是,如果您的类被赋予无效数据来正确实例化该类的实例,则可以让该类引发该类:
在代码中,您可以简单地包装以捕获该异常:
^{pr2}$正如coldspeed所说,你不能从
__init__
返回。你能做的是将对象初始化到“空”状态。使您的Position
对象执行如下操作。在然后你可以像你想的那样在if语句中使用它。在
^{pr2}$请注意,在python2.x中,相关的方法称为^{} ,而不是{a2}。因此,如果您使用python2.x,请使用
__nonzero__()
,如果您使用python3.x,请使用__bool__()
相关问题 更多 >
编程相关推荐