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

我不明白实例的属性可以变吗

函数__int__定义属性score,可为什么函数里面的代码块又变成了self.__score=score。不应该是self.score=score的吗

正在回答

3 回答

class Person(object):

    def __init__(self,x):

        self.name=x

这样子可能就好理解了


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

我是这样理解的,Person是人类 (self是人类自己,name名字变量,score分数变量)这里的name相当于x,y

self.name 就是人的名字属性,这个属性也可以说成:姓名、大名、外号等,可以任意定,定好了叫法就不能变了,=name就是名字叫‘某某某’这个是具体到人的时候,“某某某”是要换成具体如“张三”,“李四”的

self.__score, 就是属性不叫分数,叫隐藏分数,然后就不让看了

0 回复 有任何疑惑可以回复我~
class Person(object):
    def __init__(self, name, score):
        self.name = name
        self.__score = score
    def get_score(self):
        return self.__score
p1 = Person('Bob', 59)
print p1.name
print p1.get_score()

这是我在学习类的封装的时候写的代码,你看一下,这里不是说不能按照你这样设计成self.score = score,而是因为将score变成了Person类的一个私有属性,__score这是私有属性的表达语法,比如这样写了之后就不能直接print p1.__score来得到分数了,只能通过在类的内部重新定义一个函数来返回分数的值,这也就是类的封装,就是这个道理。

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

1小马哥1 提问者

其实我不明白的地方不是私有属性。score属性和__score属性是同一个属性吗?属性的添加有几种方式? 可以(self,name,score),也可以self.__score=name?
2018-09-28 回复 有任何疑惑可以回复我~
#2

玄鉴 回复 1小马哥1 提问者

self=this
2018-10-14 回复 有任何疑惑可以回复我~
#3

Awful_Leo 回复 1小马哥1 提问者

score和__score不是同一个属性。 你可以同时定义self.score = score和self.__score = score 截止到现在所学的内容,属性添加就是xiaoming = Person('xiaoming','male',25)这一种方式。
2019-02-28 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

我不明白实例的属性可以变吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信