自学Python day6--------面向对象编程(访问限制)
来源:互联网 发布:淘宝宝贝图片尺寸单位 编辑:程序博客网 时间:2024/06/05 05:38
自学Python day6——–面向对象编程(访问限制)
通过Student()创建的实例对象可以通过直接调用变量的方法来操作内部的数据,这样就隐藏了内部的复杂逻辑,而且从Studen的类定义,外部代码哎是可以自由的修改一个实例的属性比如:
Jim = Student('Jim',77)Jim.score77Jim.score = 55Jim.score55
若想要内部的属性不被外部的实例访问,这可以在属性名称前加两个下划线,其实在Python中实例的变量名以开头,这这个变量就变成了私有的了,且只能被内部访问,所以有如下:
class Student(object): def __init__(self, name, scor,num): self.__name = name self.__score = score def print_score(self): print('%s: %s' % (self.__name, self.__score))
这样就确保了外部代码不能随意修改对象内部的状态,这样通过访问限制的保护,代码更加健壮。
但是如果外部代码要获取name和score怎么办?可以给Student类增加get_name和get_score这样的方法:
class Student(object): ... def get_name(self): return self.__name def get_score(self): return self.__score
需要注意的是,在Python中,变量名类似xxx的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,所以,不能用name、score这样的变量名。
有些时候,你会看到以一个下划线开头的实例变量名,比如_name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。
双下划线开头的实例变量是不是一定不能从外部访问呢?其实也不是。不能直接访问__name是因为Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过_Student__name来访问__name变量:
>>> bart._Student__name'Bart Simpson'
0 0
- 自学Python day6--------面向对象编程(访问限制)
- 自学Python day6--------面向对象编程(获取对象信息)
- 自学Python day6--------面向对象编程
- 自学Python day6--------面向对象编程(类和实例)
- 自学Python day6--------面向对象编程(继承和多态)
- 自学Python day6--------面向对象编程(实例属性和类属性)
- 【Python学习笔记】面向对象编程:访问限制
- 自学 java 笔记 day6(面向对象2)
- 面向对象(day6)
- Python面向对象编程(创建实例属性,初始化实例属性,访问限制(__xxx))
- Python自学笔记二、面向对象编程
- Python面向对象编程(类和实例 访问限制 继承和多态 获取对象信息 实例属性和类属性)
- Python自学笔记三、面向对象编程2
- day6面向对象2
- 7面向对象---访问限制
- Python 面向对象编程基础(定义类并创建实例、创建实例属性、初始化实例属性、访问限制、类属性、属性名冲突、实例方法、类方法)
- python入门笔记(Day6)--面向对象,实例,封装,继承多态,dir()
- DAY6之Python学习笔记:面向对象术语整理
- HTML li如何垂直居中
- 疾病管理
- Android集成环信easeui,设置圆形头像,修改气泡和扩展栏,跳过打包冲突
- matlab svd分解
- 强类型语言与弱类型语言
- 自学Python day6--------面向对象编程(访问限制)
- POJ3233MatrixPowerSeries
- APUE笔记---线程概念、创建、终止和属性
- 基于MINA框架快速开发网络应用程序
- HDU 2899 二分答案
- Python基础
- 室内智能照明控制系统电路设计
- 自学Python day6--------面向对象编程(继承和多态)
- 如何隐藏和显示HTML标签