为了账号安全,请及时绑定邮箱和手机立即绑定

给Person类增加属性

在前两节给Person类增加count属性时,不是在class Person(object):的下方写入的count吗?在这一节答案给的代码中,为什么给Person类增加的私有属性__score要写在 def __init__(self, name, score):的下方,不理解求大神解答。。代码见下方:

class Person(object):

   def __init__(self, name, score):
       self.__name = name
       self.__score = score

   def get_grade(self):
       if self.__score >= 80:
           return 'A'
       if self.__score >= 60:
           return 'B'
       return 'C'

p1 = Person('Bob', 90)
p2 = Person('Alice', 65)
p3 = Person('Tim', 48)

print p1.get_grade()
print p2.get_grade()
print p3.get_grade()

正在回答

3 回答

私有属性和类属性不同:私有属性是在属性的前面加了   双下划线   外部不能访问他    而类属性不同   类属性只有一个值   就在定义的时候,而且被所有实例访问到的类属性也是同一个   

0 回复 有任何疑惑可以回复我~

题目写错了:“如果将类属性 count 改为私有属性__count,则外部无法读取__score,但可以通过一个类方法获取,请编写类方法获得__count值。”加粗部分应该是__count。

此外,如果属性写在类名下面,就是类属性,如果是写在__init__()内,就是实例属性,你可以这样理解,init传入的self就是实例自己,self.__score当然是实例的属性了,而如果要在init内调用类属性__count,就必须用Person.__count。


1 回复 有任何疑惑可以回复我~
#1

慕用9571995 提问者

十分感谢你的回答。
2017-08-19 回复 有任何疑惑可以回复我~

我觉得是你两个概念弄混了,前两节的count是类属性,这里的score是实例的私有属性,就要写在构造函数里面了

0 回复 有任何疑惑可以回复我~
#1

慕用9571995 提问者

那么题目说给person类增加一个私有属性意思是给person类的实例增加一个私有属性?可以这么理解吗
2017-08-19 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255532    人
  • 解答问题       3038    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

给Person类增加属性

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号