在群里下载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