You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何以下Python构造函数代码执行报错?请排查代码问题

Python构造方法报错问题排查与修复

问题原因

Python不支持方法重载——同一个类里定义多个同名方法时,后定义的会直接覆盖前面的。你代码里带name参数的__init__方法把无参的__init__给覆盖了,所以调用Student()的时候,实际调用的是需要传name参数的构造方法,自然会因为缺参数报错。

修复方法

如果要同时支持无参和带参创建实例,给name参数加个默认值就行,两种调用方式都能兼容:

class Student:
    college = 'usa'
    name = 'rahul'

    def __init__(self, name=None):
        # 只有传入name时才覆盖属性
        if name is not None:
            self.name = name
        print('new Student is entered ...')

# 无参创建实例
a = Student()
# 带参创建实例
b = Student('Alice')

要是希望无参时用类默认的name值,带参时替换,上面的代码就能实现——无参调用时a.name会用类属性的'rahul',带参时b.name是传入的'Alice'。

额外说明

Python里想实现类似“重载”的效果,一般都是靠参数默认值或者可变参数(*args、**kwargs),不是定义多个同名方法。

内容的提问来源于stack exchange,提问作者Roshan Kalmathe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:33:12