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

为何使用Setter和Getter为类新增变量后出现参数缺失报错?

问题排查与解决方法

嘿,我来帮你搞定这个报错问题~

错误原因

你定义的person类的构造方法__init__明确要求传入name和age两个必填位置参数,但你创建实例的时候写的是p1 = person()——完全没传这俩参数,Python自然会提示你缺少必需的位置参数啦。

两种解决办法

方法1:创建实例时直接传入参数

既然构造方法要求参数,那创建对象的时候直接把初始值传进去就行,之后如果需要修改再用setter方法:

class person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def set_name(self,y):
        self.name = y
    def get_name(self):
        return self.name
    def set_age(self,x):
        self.age = x
    def get_age(self):
        return self.age

# 创建实例时传入初始参数
p1 = person("Armeen", "20")
# 如果需要修改再调用setter
# p1.set_name("NewName")
# p1.set_age("21")
print(p1.get_age())
print(p1.get_name())

方法2:给构造方法参数设置默认值

如果你希望创建实例时可以不传入初始值,之后再用setter赋值,可以给__init__的参数设置默认空值:

class person:
    # 给name和age设置默认空字符串
    def __init__(self, name="", age=""):
        self.name = name
        self.age = age
    def set_name(self,y):
        self.name = y
    def get_name(self):
        return self.name
    def set_age(self,x):
        self.age = x
    def get_age(self):
        return self.age

p1 = person()
p1.set_name("Armeen")
p1.set_age("20")
print(p1.get_age())
print(p1.get_name())

这样修改后,代码就能正常运行啦~

内容的提问来源于stack exchange,提问作者Armeen Hossain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:28:34