技术文档 2026年04月17日
0 收藏 0 点赞 958 浏览 1174 个字
摘要 :

本人实际测试了Python 3.11,踩过在__init__里面使用可变默认参数致使多个实例共同享用同一列表的坑,新手依照步骤一步步去操作,便能够轻松躲开这类常见问题。 步骤1 定……

本人实际测试了Python 3.11,踩过在__init__里面使用可变默认参数致使多个实例共同享用同一列表的坑,新手依照步骤一步步去操作,便能够轻松躲开这类常见问题。

步骤1 定义类名与父类继承

于PyCharm里新建demo.py,键入class ChildClass(ParentClass): ,要是不需要继承父类的话那么括号就留空。有固定参数:类名的首字母要大写,括号里面直接写上父类名比如object。

【新手避坑】

经常出现的报错是NameError: name ‘ParentClass’ is not defined,其缘由在于父类没有提前进行定义或者导入,解决的方式是:检查父类在拼写方面是否正确,或者在文件的顶部采用from module import ParentClass这样的形式进行导入。

步骤2 编写__init__初始化方法

于类定义的内部,进行缩进4空格的操作,输入def __init__(self, name, items=None):。对于关键参数items而言,其最优的推荐值是None,原因在于:需要避免使用[]作为默认值,不然的话,所有的实例将会共享同一个列表对象,进而导致数据出现混乱。

【新手避坑】

报错为TypeError: __init__()缺少1个必需的位置参数,其核心的缘由在于在进行实例化操作之际忘记传递参数了。要迅速解决此问题,就要去检查类名(参数)是不是已经配备齐全了__init__当中除self之外的所有必须填写的参数。

步骤3 添加普通方法并实例化

于__init__的下面持续去定义def show(self):,在该方法之内运用self.属性来访问数据。操作的路径是:将光标移动到文件的末尾处,输入obj = 类名(参数值),接着调用obj.show()。

两种方案对比

方案A:通过手动去定义双下划线init,在这种方式下,能够灵活地对每个参数加以控制,此方案适合那种具备复杂业务逻辑的情况。

运用@dataclass的方案B:它能够自动生成__init__,其代码量较少,适用于纯粹的数据容器

对于取舍逻辑而言,当存在需要进行自定义校验或者计算的情况之时,应当选择A;而当仅仅是存储属性,并且Python的版本大于或者等于3.7的时候,则应当选择B。

高频完整报错一站式解决

原因:在方法里使用了未在__init__中定义的属性。

解决流程是这样的,首先,回到__init__添加self.xxx = 默认值,接着,检查方法中属性名拼写,最后,重新运行代码。

针对于存在需要动态添加诸如采用__slots__这般的属性或者进行元类编程的情况,本方法并不适用,其替代方案为去查阅__slots__官方给出的文档或者运用type()来动态性地创建类。你在编写代码期间,还碰到过什么样的关于类创建的极为罕见的报错呢?欢迎在评论区域分享你遭遇问题的经历。

微信扫一扫

支付宝扫一扫

版权:
1、本网站名称:智行者IC社区
2、本站唯一官方网址:https://www.2632.net (警惕克隆站点,认准SSL证书指纹:B2:3A:...)
3、本站资源100%原创除软件资源区,侵权投诉请提交权属证明至 xiciw@qq.com (24小时响应)
4、根据《网络安全法》第48条,本站已部署区块链存证系统,所有用户行为数据将保存至2035年3月9日以备司法调取
5、资源观点不代表本站立场,禁止用于商业竞赛/学术造假,违规后果自负
6、违法信息举报奖励200-5000元,通过匿名举报通道提交证据链
7、核心资源采用阿里云OSS+IPFS双链存储,补档申请请使用工单系统
转载请注明出处:https://www.2632.net/doc/3660.html

相关推荐
2026-04-17

本人实际测试了ZDrive SDK v2.3.1,经历过固件签名校验失败的情况,新手依照步骤逐个进行操作,便能…

2026-04-17

实测Altium Designer 25.4的是本人,踩到了因STEP模型与机械层冲突致使无法更新PCB的坑,新手按照步…

2026-04-17

本人实际测试了Python 3.11,踩过在__init__里面使用可变默认参数致使多个实例共同享用同一列表的坑…

2026-04-17

实测西门子3RV2011 – 1AA10断路器,其额定电流为16A,本人踩过隐性短路致使送电就跳闸、然而…

2026-04-16

就本人实际测试Altium Designer 24.0.1而言,在原理图库以及PCB封装引脚映射出现错乱的情况上踩过坑…

2026-04-16

亲身经历实测Altium Designer 24.2,遭遇过DDR3地址线等长约束设置为±5mil却始终无法通过审核,进而…

发表评论
暂无评论

还没有评论呢,快来抢沙发~

点击联系客服

在线时间:8:00-16:00

客服QQ

870555860

客服电话

173-5410-9521

客服邮箱

xiciw@qq.com

扫描二维码

手机访问本站

头部图片
弹窗背景

PCB+嵌入式硬件5月实训预约报名

为助力学员快速掌握 PCB + 嵌入式硬件核心技能,精准匹配电子行业热门岗位需求,直通高薪就业赛道、打通职场晋升通道,2026 年 5 月 PCB + 嵌入式硬件实训课现已正式开启预约报名!老学员推荐报名可享专属惊喜福利,诚邀各位踊跃参与!

立即报名 我知道了