设为首页 收藏本站
查看: 591|回复: 0

[经验分享] Python 父类构建函数中字段,赋值等于子类中属性时;报错问题

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-7 09:25:22 | 显示全部楼层 |阅读模式
    在群里下载XX Python培训机构的PDF,里面有一段小游戏代码;本着菜鸟,努力码代码的心态。结果运行时报错,提示:
#!/usr/bin/env python
# coding=utf-8


class unit:
    def __init__(self):
        self.___blood_max =  self.___blood
        print self.name + " created"

        
class attacker(unit):
    def attack(self,u):
        u.__blood -= self.dps
        if u.__blood <= 0:
            print u.name + " was dead!!!"
            del u
        else:
            print u.name + " was attacked !  __blood = " + str(u.__blood)


class machineGun(attacker):
    def __init__(self,name):
        self.__blood = 100
        self.name = name
        unit.__init__(self)
        self.dps = 30
        print self.name + " Created"
        

class tree(unit):
    def __init__(self,name):
        self.name = name
        print self.name + " Created"
        
class healer(unit):
    def __init__(self,name):
        self.__blood = 50
        self.name = name
        unit.__init__(self)
        self.hps = 15
        print self.name + " Created"
        
    def heal(self,u):
        u.__blood += self.hps
        if u.__blood >= u.__blood_max:
            u.__blood = u.__blood_max
        print u.name + "was healed ! __blood = " +  str(u.__blood)
        

j1 = machineGun("j1")
j2 = machineGun("j2")
h1 = healer("h1")

j1.attack(j2)
j1.attack(j2)
h1.heal(j2)
j1.attack(j2)
j1.attack(j2)
j1.attack(j2)

错误如下:

Traceback (most recent call last):
  File "C:\Users\Cranezhou\workspace\test\test01\game.py", line 50, in <module>
    j1 = machineGun("j1")
  File "C:\Users\Cranezhou\workspace\test\test01\game.py", line 25, in __init__
    unit.__init__(self)
  File "C:\Users\Cranezhou\workspace\test\test01\game.py", line 7, in __init__
    self.___blood_max =  self.___blood
AttributeError: machineGun instance has no attribute '_unit___blood'

    后经在XX培训群,咨询大神;说__开头的变量,在Python后来的版本中定义有变动。替换为一个下划分线后,程序总算可以运行了。

    后经再次查看eclipe debug,想起__开头的变量是私有变量;父类构建函数中字段,赋值等于子类中属性时,找不到相对应的属性,实属正常。

    后续:测试,子类 能不能引用 父类中的私有变量?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-161252-1-1.html 上篇帖子: Python实现, 命令行下的拼图游戏 下篇帖子: fabric-ssh 自动从文本读取连接信息批量远程管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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