python对象没有属性_Python-对象没有属性E

我从头开始在一个单独的文件中重新编写了整个类,所有东西都神奇地工作过,条件语句等等。所以,我只是将这个类和几个函数从新文件导入主文件。我还是不知道第一次出了什么问题。

注意以下问题在技术上已解决。你可以在代码的底部看到一个拼写错误。然而,这暴露了一个问题,即我的所有条件(if、try等)都停止工作,这就是为什么我在单独的模块中重新编写类

I会删除这篇文章,因为它让所有人一无所获,但显然这不是堆栈溢出的工作原理。

好吧,我一直在学习Python 3.4,并决定在一旁做一些家庭作业作为练习。我开始制作一个脚本,它对两个人的战斗进行了一个非常基本的模拟,并且会用我学到的任何新东西(比如添加一个GUI)来扩展它。

脚本一开始很好,但我做的更改越多,错误就越多。现在到了这样的地步,我不能进入任何领域的“战斗机”类没有它抛出错误,如:'duelist' object has no attribute '_duelist__health'

除了“”duelist“对象没有属性“\duelist\uuxxx””,除了输入错误之外,我还有0个其他错误。

不幸的是,谷歌没能帮上忙,所以这就是为什么我要做我的第一个StackOverflow帖子。

下面是第一个错误快乐字段“health”:class duelist:

def __init__(self):

self.name = "Duelist" #must not be ""

self.health = 5 #must be >0

self.damage = [1, 3] #random attack range. Must be >=0 0 and the first must not be higher.

self.skill = 10 #% chance to pass a skill check. Representative of parrying/dodging. Must be >=0

self.shield = True #can block?

self.shieldE = 80 #max block %. Must be >0

self.agility = 0.5 #rate of attack in seconds. Must be >=0.05

self.precision = 10 #critical hit chance. Must be >=0

self.critical = 2.0 #critical multiplier. Must be >= 1.1

#name

@property

def name(self):

return self.__name

@name.setter

def name(self, value):

if value != "":

self.__name = value

else:

print("Invalid Name.\n")

#name

#health

@property

def health(self):

return self.__health

@health.setter

def health(self, value):

try:

value = value(int)

if value>=1:

self.__health = value

else:

print("Health must be above 0.\n")

except:

print("Invalid Health.\n")

#health

另外,对于那些建议将字段名更改为不包含'''''''''''''''''''''''''everywhere'的用户,这会导致无限循环。

准确输入:class duelist:

def __init__(self):

self.health = 5

@property

def health(self):

return self.__health

@health.setter

def health(self, value):

self.__health = value

D = duelist()

print(D.health)

D.health = 15

print(D.health)

正确返回5

15

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值