我的代码:
def distance(a, b):
ta = type(a)
tb = type(b)
if (ta == Vector and tb == Line):
return ObjectRelations.point_to_line_distance(a, b)
if (ta == Line and tb == Vector):
return ObjectRelations.point_to_line_distance(b, a)
有没有一种方法可以同时进行if
比较?由于Vector
和Line
对象是如何工作的,所以给point_to_line_distance
的参数顺序很重要。我想检查 * a
或b
中是否有一个是Line
,然后检查另一个是否是Vector
。
做这件事的最好方法是什么?
我的方法是可行的,但我只想写干净的代码,我的解决方案并不理想。
3条答案
按热度按时间1szpjjfi1#
如果你使用的是Python 3.10或更高版本,你可以使用structural pattern matching来替换
if
语句和显式类型检查:标签:Convert multiple isinstance checks to structural pattern matching
hc2pp10m2#
首先,检查类型的正确方法是使用
isinstance
-这种方法还可以检查任何潜在的子类型。其次,你可以通过找出哪个对象是Line来清理代码,将其分配给指定的变量,然后检查其他对象是否具有正确的类型,并在变量上明确其类型。
fgw7neuy3#
您可以使用
or
连接两个if语句。if (ta == Vector and tb == Line) or (ta == Line and tb == Vector):