Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

python 重载

作者:疾风雨辰   发布日期:2025-02-24   浏览:108

# Python 重载示例

# 在 Python 中,严格意义上并不支持像 C++ 或 Java 那样的方法重载,
# 但可以通过其他方式实现类似的效果。以下是几种常见的实现方法:

# 方法1:使用默认参数
class Calculator:
    def add(self, a, b=0, c=0):
        return a + b + c

# 使用示例
calc = Calculator()
print(calc.add(1))       # 输出: 1
print(calc.add(1, 2))    # 输出: 3
print(calc.add(1, 2, 3)) # 输出: 6


# 方法2:使用 *args 和 **kwargs
class MultiCalculator:
    def add(self, *args):
        return sum(args)

# 使用示例
multi_calc = MultiCalculator()
print(multi_calc.add(1))           # 输出: 1
print(multi_calc.add(1, 2))        # 输出: 3
print(multi_calc.add(1, 2, 3, 4))  # 输出: 10


# 方法3:使用 functools.singledispatch
from functools import singledispatchmethod

class TypeBasedCalculator:
    @singledispatchmethod
    def add(self, arg):
        raise NotImplementedError("Unsupported type")

    @add.register(int)
    def _(self, a: int, b: int = 0):
        return a + b

    @add.register(list)
    def _(self, a: list):
        return sum(a)

# 使用示例
type_calc = TypeBasedCalculator()
print(type_calc.add(1, 2))             # 输出: 3
print(type_calc.add([1, 2, 3, 4]))     # 输出: 10

解释说明:

  1. 默认参数:通过给函数参数设置默认值,可以实现不同数量参数的调用。
  2. *`argskwargs`:允许函数接受任意数量的位置参数和关键字参数,从而实现灵活的参数传递。
  3. functools.singledispatchmethod:根据传入参数的类型选择不同的处理逻辑,类似于多态。

这些方法都可以在一定程度上实现类似方法重载的效果。

上一篇:python的print

下一篇:python正则替换

大家都在看

python时间格式

python ord和chr

python中的yield

python自定义异常

python list.pop

python的for i in range

npm config set python

python代码简单

python读取文件夹

python中turtle

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站