测试python是否有类似Java重载的操作,只关注常用部分,不钻牛角尖

python基本上没有重载,因为在python一切都是对象,那么函数的名称也是一个对象的引用,当存在相同函数名时,可以理解为该变量名引用地址的改变,即钱一个变量的地址会被后一个覆盖。

python是有重载的,如对字符串和数值变量add运算时,会自动调用重载的。

  1. print('a' + 'b') ---> ab
  2. print(1 + 2) ---> 3

以上,可充分证明python存在重载。

重载的操作很有趣,主要是指:函数或方法具有相同的名称,但是在参数的类型以及数量方面出现差异(与排序无关)时,那么在调用该函数时可根据传递参数判断使用哪一个函数或方法。

  1. # 测试python是否有重载,还是python只有重写
  2. class Zoo(object):
  3. def __init__(self, name, age, gender, isDanger):
  4. self.name = name
  5. self.age = age
  6. self.gender = gender
  7. self.isDanger = isDanger
  8. def age_setter(self, num):
  9. self.age = num
  10. return self.age
  11. def age_setter(self, num, desc):
  12. self.age = num
  13. print(desc)
  14. return self.age
  15. dog = Zoo(name='dog', age=12, gender='male', isDanger=False)
  16. dog.age_setter(11, '修改了年龄')

当两个函数调换顺序,即会报错。

以上,事实证明python中并没有存在重载,而只是存在了重写,即可以理解为覆盖。

版权声明:本文为W-Wang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/W-Wang/p/12827781.html