首页 > 解决方案 > “超出最大递归深度”试图调用重载函数

问题描述

我正在设置自定义用户身份验证,当我尝试在 powershell 中创建超级用户时,它给了我一个错误“[Previous line repeated 986 more times] RecursionError: maximum recursion depth exceeded”,它指的是我的 create_superuser()

模型.py

def create_superuser(self, username, password=None):
    user = self.create_superuser(
        username,
        password = password,
        is_staff = True,
        is_admin = True

    )
    user.save(using=self._db)
    return user

标签: pythonoverloadinginfinite-recursion

解决方案


看起来你想调用一个重载的函数。

在 Python 中,没有函数重载。相反,函数可以具有灵活的签名(可选参数,通过*args**kwargs接收任何参数)。如果你在同一个作用域中定义了两个同名的函数,解释器后面遇到的函数将简单地替换前者。

因此,您需要使用灵活的签名将您的两个功能合并为一个。(没有什么可以阻止您拆分辅助函数或其他任何东西,但它们需要有不同的名称)。


推荐阅读