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

Python面向对象编程:为何需将属性参数设为None才能运行?

为什么Shape类的__init__需要给w和h设默认值None?

问题的核心原因是你在__add__方法里写了这行代码:

shp = Shape()

这里是不带任何参数创建Shape类的实例。如果你的__init__方法定义成def __init__(self, w, h),Python会强制要求创建实例时必须传入w和h两个参数,否则会直接抛出TypeError: __init__() missing 2 required positional arguments: 'w' and 'h'的错误。

给w和h设置默认值None,本质是让__init__支持无参数调用,这样你就能先创建一个空的Shape对象,之后再手动给它的width和height属性赋值,就像你在__add__里做的那样。

当然,你也可以不用给__init__加默认值,只要修改__add__的写法就行:

def __add__(self, other):
    shp = Shape(self.width + other.width, self.height + other.height)
    return shp

这样直接把计算好的宽高传给Shape的构造方法,就不需要无参数创建实例了,两种写法都能实现需求,看你更习惯哪种。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:57:42