在Python中,我可以编写一个函数,它将对象作为输入,并根据对象的类型执行不同的计算吗?
例如,假设我有两个课程:" circle"和" line"。我定义了一个具有半径和中心位置的圆形对象A,以及一个具有不同半径和中心位置的圆形对象B.然后,我定义了一个线对象C,其中包含方向向量和沿线的点。
我想写一个计算交集的函数:
def intersect(obj1,obj2):
# Returns intersection of two geometric entities
如果我输入两个圆圈A和B,我希望函数返回A和B的交点区域。但是如果我输入圆圈A和C行,我希望输出为点(如果有的话)线穿过圆圈的地方。因此,相交(obj1,obj2)将需要以某种方式读取obj1和obj2的类,并相应地采取行动。
答案 0 :(得分:2)
是的,您当然可以检测Python对象的类型并根据它执行不同的行为。内置的.lightContent
方法将提供您需要的信息。
我应该强调,这是相当于程序范式,而你在研究面向对象(特别是多态)方面做得更好。
您还可以从函数返回任意类型,因此在一个案例中返回两个圆的二维交集,在另一个案例中返回一个圆和线之间的两个交点,当然可行同样。
再一次,那是解决可能性,而不是智慧。我当然可以尝试用黑线鳕砍掉一棵巨大的卡里树,但这种举动的智慧充其量是可疑的。
作为示例,以下程序显示了如何根据传入的参数类型返回不同类型的值:
type()
正如预期的那样输出:
def fn(x):
if type(x) is int:
return 42
if type(x) is list:
return [3.14159,2.71828]
return None
print(fn(1))
print(fn([1,2]))
print(fn(42.7))