鱼C论坛

 找回密码
 立即注册
查看: 558|回复: 3

实例化子类会导致父类也实例化,怎么避免这种问题

[复制链接]
发表于 2018-9-23 11:38:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
BA)]HT0DK`939]I2ATBL[%X.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-23 12:01:43 From FishC Mobile | 显示全部楼层
你的初始化设计了类的计数器,属于全局的,不是绑定于自身。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-23 13:23:37 | 显示全部楼层
简单啊,把属性绑定给实例而不是类就好了,或者在B类也创建一个类属性覆盖掉就好了
两个实现方法     
1、在实例A中加入语句   self.x = 0
2 、在实例B中加入init方法 B.x = 0
出现这个问题的原因是,python访问的时候是按照一个类树来访问的,举个例子,创建实例 b = B() , 调用实例b中的属性时,会先访问b  是否有属性(这些就是类B中init方法下设置的self.x属性,和继承的self.x属性),然后再去访问B中是否有属性(也就是类属性B.x),然后从左到右访问继承的父类有没有这个属性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-23 13:24:38 | 显示全部楼层
类属性和实例属性别重名就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 19:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表