为何使用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
相关产品推荐
相关产品推荐

