在Python中处理变量数据类型的正确方法

在Python中处理变量数据类型的正确方法,python,class,types,enums,Python,Class,Types,Enums,我试图编写一个Python类段,它由两个向量组成,表示它的点和与这些点相关的函数 线段可以相交,所以我尝试编写一个方法,s1.intersect(s2),它返回关于线段s1和s2如何相交的信息。根据线段的不同,需要不同数量的点来表示交点: 无交点->0点(不需要特定的数据结构) 单交叉点->1点(需要单矢量) 交叉区域->2个点(需要段) 换句话说,不同的情况似乎需要2-3种数据类型。这很不方便,因为该函数的用户必须手动区分它们 以下是返回这些数据类型的一些方法: 返回包含0、1或2项的向量的

我试图编写一个Python类
,它由两个
向量
组成,表示它的点和与这些点相关的函数

线段可以相交,所以我尝试编写一个方法,
s1.intersect(s2)
,它返回关于线段s1和s2如何相交的信息。根据线段的不同,需要不同数量的点来表示交点:

  • 无交点->0点(不需要特定的数据结构)
  • 单交叉点->1点(需要单
    矢量
  • 交叉区域->2个点(需要
  • 换句话说,不同的情况似乎需要2-3种数据类型。这很不方便,因为该函数的用户必须手动区分它们

    以下是返回这些数据类型的一些方法:

    • 返回包含0、1或2项的
      向量的列表
    这将获得信息并完成任务,但返回的值并不反映它们实际引用的数据类型,即
    向量
    ,以及一些故障通知

    • 返回不同的数据类型:
      Vector
      Segment
      False
    在这种情况下,用户必须使用
    isinstance
    来区分这些类型,否则可能会出现无效类型问题。这也很难看

    • 返回一个包装类,
      Intersection
      ,该类存储
      向量
      False
    这样做的好处是每次都返回相同的数据类型,但用户仍然需要使用
    isinstance
    来区分不同的类型


    在Python中处理多个返回类型的最佳方法是什么?

    继续并返回
    None
    、一个
    向量或一个
    段。这是三种可能性,即使你把它总结起来,用户在某个时候也需要处理这些差异


    所以请保持简单,让您的用户使用
    isinstance()
    (这是一个完美的Pythonic)。

    我不确定您的问题是什么。。。您不必在Python中返回特定类型,因此您的
    intersect()
    方法可以根据它确定的内容返回其中任何一个类型。在结果处理代码中,您可以使用
    isinstance
    hasattr
    ,或其他等效工具来确定您收到了什么。类
    交集如何与此相适应?哇。。。我忘了
    isinstance
    。基本问题,抱歉:/
    isinstance
    很少需要,也不太可能是对您的问题的最有力的回答。为什么2不能是带有单个
    向量的
    ,1不能是空的
    。这样,您根本不需要检查类型。