Python学习之7.6成员可见性:公开和私有

Python学习

7.6 成员可见性:公开和私有

成员可以理解为变量方法

(1).编程提倡的规范:
一般来说,我们想修改一些类的特征的值,不应该通过直接访问的方式来改变变量的值;正确的方式应该为,对于所有类下面变量的更改应该通过方法来完成。

(2).成员包括:
公开成员(public):在类的外部可以对它直接赋值或读取。
私有成员(private):在类的外部无法对它赋值或读取。

在Python中,对于一个变量或者方法,名字前面没有双下划线“__”则认为是公开的;如果前面加上双下划线则认为是私有的。一个小秘密:如果前后都有双下划线,则又变成公开的,如构造函数。也不建议定义方法或变量名时,用前后双下划线,这是为了和Python内置的区别开。

(3).观察下面一个有趣的现象:

class Student():
    sum1 = 0
    
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.__score = 0
 
student1 = Student('石敢当', 18)
student1.__score = -1
print(student1.__score)

运行结果:
在这里插入图片描述
_score是私有的变量,为什么在外部可以修改它并且可以打印出来呢?
原来这是由于Python语言的动态性,在类的外部通过点操作符重新建立了一个__score变量,我们可以通过调用__dict__变量来查看,加入以下一行代码:

print(student1.__dict__)

输出结果:
在这里插入图片描述
可见由于Python语言的动态性,在类的外部通过点操作符重新建立了一个__score变量。并且原有的私有变量被Python改名为_Student__score,所以不能通过__score再来访问,故为私有。但是我们可以猜想,能不能通过_Student__score名来访问私有变量呢?答案是可以的,但是不建议这样做,因为我们要尊重私有变量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值