在Python中处理变量数据类型的正确方法
我试图编写一个Python类在Python中处理变量数据类型的正确方法,python,class,types,enums,Python,Class,Types,Enums,我试图编写一个Python类段,它由两个向量组成,表示它的点和与这些点相关的函数 线段可以相交,所以我尝试编写一个方法,s1.intersect(s2),它返回关于线段s1和s2如何相交的信息。根据线段的不同,需要不同数量的点来表示交点: 无交点->0点(不需要特定的数据结构) 单交叉点->1点(需要单矢量) 交叉区域->2个点(需要段) 换句话说,不同的情况似乎需要2-3种数据类型。这很不方便,因为该函数的用户必须手动区分它们 以下是返回这些数据类型的一些方法: 返回包含0、1或2项的向量的
段
,它由两个向量
组成,表示它的点和与这些点相关的函数
线段可以相交,所以我尝试编写一个方法,s1.intersect(s2)
,它返回关于线段s1和s2如何相交的信息。根据线段的不同,需要不同数量的点来表示交点:
矢量)
段)
- 返回包含0、1或2项的
向量的列表
向量
,段
,以及一些故障通知
- 返回不同的数据类型:
、Vector
或Segment
False
isinstance
来区分这些类型,否则可能会出现无效类型问题。这也很难看
- 返回一个包装类,
,该类存储Intersection
、向量
或段
False
isinstance
来区分不同的类型
在Python中处理多个返回类型的最佳方法是什么?继续并返回
None
、一个向量或一个段。这是三种可能性,即使你把它总结起来,用户在某个时候也需要处理这些差异
所以请保持简单,让您的用户使用isinstance()
(这是一个完美的Pythonic)。我不确定您的问题是什么。。。您不必在Python中返回特定类型,因此您的intersect()
方法可以根据它确定的内容返回其中任何一个类型。在结果处理代码中,您可以使用isinstance
、hasattr
,或其他等效工具来确定您收到了什么。类交集如何与此相适应?哇。。。我忘了isinstance
。基本问题,抱歉:/isinstance
很少需要,也不太可能是对您的问题的最有力的回答。为什么2不能是带有单个向量的段
,1不能是空的段
。这样,您根本不需要检查类型。