Hasty Briefsbeta

双语

Overloaded Overloading

4 days ago
  • Python不支持方法重载(多个同名但签名不同的方法)。只有最后一个方法定义会被保留。
  • Python确实支持运算符重载,通过使用如__add__这样的魔术方法,使得像'+'这样的运算符可以为不同类型以不同方式工作。
  • '+'运算符既用于加法(数字)也用于拼接(字符串),因为float和str类定义了自己的__add__方法。
  • 为了模拟方法重载,你可以编写一个调度方法,通过isinstance()检查参数类型或参数的存在性。
  • 或者,Python的functools.singledispatch装饰器可用于基于第一个参数类型的简单调度情况。
  • 术语'重载'在Python中有两种不同的含义:方法重载(不支持)和运算符重载(支持)。