class area:
def __init__(self):
self.rad = 0.0
self.side = 0
self.length = 0
self.breadth = 0
self.ar1 = 0.0
self.ar2 = 0
self.ar3 = 0
def cal(self,r=0.0,s = 0):
if(r!=None):
self.rad = r
self.ar1 = 3.14*self.rad*self.rad
print(self.ar1)
elif(s!=None):
self.side = s
self.ar2 = self.side*self.side
print(self.ar2)
obj = area()
obj.cal(7.0)
obj.cal(12)
我们通过使用不同类型的参数编写相同的方法来实现函数重载,但调用时控件进入if部分而不是elif部分。我们希望使用elif部分实现圆的面积和平方的面积,但同时调用这两个参数进入if部分
我认为你的问题是那些
r!=None
和s!=None
。至少这肯定是一个破坏代码的问题;我不确定是不是你要问的那个这些参数的默认值是
0.0
和0
。两者都不等于None
r != 0
和s != 0
。r != 0.0
not math.isclose(r, 0)
李>None
和零都不是真的,但非零的数字只是检查r
本身李>None
。is not None
,而不是!= None
李>同时,如果同时为这两个传递值,会发生什么?或者两者都没有
另外,如果您希望人们传递
s
而不传递r
,那么唯一的方法就是作为关键字参数(除了通过查看函数定义来查看r
的默认值是什么,然后显式传递该值)所以,也许这些应该只是关键字参数
综上所述,以下是你想要的:
现在:
但实际上,有一个更简单的方法来完成这一切:
在定义端和调用端更易于编写和阅读:
相关问题 更多 >
编程相关推荐