《Python程序设计基础07_5隐藏数据域ppt课件.pptx》由会员分享,可在线阅读,更多相关《Python程序设计基础07_5隐藏数据域ppt课件.pptx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、在此输入您的封面副标题Python程序设计基础程序设计基础07_5隐藏数据域隐藏数据域杭州师范大学杭州师范大学 虞歌虞歌 第第2页页Python程序设计基础程序设计基础对象和类对象和类杭州师范大学杭州师范大学 虞歌虞歌 第第3页页Python程序设计基础程序设计基础对象和类对象和类Circle类的数据域类的数据域self.radius是公有的,是公有的,Circle类的普通成员方法:类的普通成员方法:get_ perimeter (self) 和和get_area(self),更改器方法:,更改器方法:set_radius(self, radius),构造方法:,构造方法:_init_(sel
2、f, radius)也是也是公有的。它们被称为类的公有的。它们被称为类的公有成员公有成员。类本身和。类本身和类外部均可直接访问类的公有成员类外部均可直接访问类的公有成员。直接直接访问对象的数据域并不是一个好方法。数访问对象的数据域并不是一个好方法。数据域的值有可能会被篡改设置为一个不合法的据域的值有可能会被篡改设置为一个不合法的值值。使。使类会变得难以维护并且易于出错。类会变得难以维护并且易于出错。杭州师范大学杭州师范大学 虞歌虞歌 第第4页页Python程序设计基础程序设计基础对象和类对象和类出于出于封装和数据隐藏(封装和数据隐藏(Data Hiding)的需要,类的数据域一般是私有的。)的
3、需要,类的数据域一般是私有的。若若数据域名以数据域名以两个下划线开头两个下划线开头,那么这个数据域就是私有数据域。例如,那么这个数据域就是私有数据域。例如,Circle类的私有数据域类的私有数据域self._radius。同样,若成员方法名以两个下划线开头,那么这。同样,若成员方法名以两个下划线开头,那么这个方法就是私有方法,只能在类内部使用。它们被称为类的个方法就是私有方法,只能在类内部使用。它们被称为类的私有成员私有成员。类类本身可以直接访问类的私有成员,类外部不能直接访问类的私有成员本身可以直接访问类的私有成员,类外部不能直接访问类的私有成员。私有数据域在类内部可以直接访问,在类外部不能
4、直接访问。私有数据域在类内部可以直接访问,在类外部不能直接访问。为了为了获取私有数据域的值,可以定义一个获取私有数据域的值,可以定义一个公有的访问器成员方法公有的访问器成员方法来返回私有数来返回私有数据域的值据域的值;为了为了更改私有数据域的值,可以定义一个更改私有数据域的值,可以定义一个公有的更改器成员方法公有的更改器成员方法来设置私有数来设置私有数据域的值。据域的值。注意:若类是被用来给其他程序使用的,为了防止数据被篡改并使得类更易注意:若类是被用来给其他程序使用的,为了防止数据被篡改并使得类更易于维护,就需要将数据域定义为私有的。否则就没必要隐藏数据域。于维护,就需要将数据域定义为私有的
5、。否则就没必要隐藏数据域。杭州师范大学杭州师范大学 虞歌虞歌 第第5页页Python程序设计基础程序设计基础对象和类对象和类访问访问器器成员成员方法。方法。具有具有如下如下的的方法方法头:头:def get_DataFieldName(self):DataFieldName为私有数据域名(不包括开头的两个下划线)。为私有数据域名(不包括开头的两个下划线)。例如例如,Circle类的私有数据域类的私有数据域self._radius,方法,方法头为头为:def get_radius(self):若私有数据域中存放的是布尔值若私有数据域中存放的是布尔值,方法,方法头为:头为:def is_DataF
6、ieldName(self):更改器成员方法更改器成员方法。具有具有如下如下的的方法方法头:头:def set_DataFieldName(self, 形式参数表形式参数表):DataFieldName为私有数据域名(不包括开头的两个下划线)为私有数据域名(不包括开头的两个下划线)。例如例如,Circle类的私有数据域类的私有数据域self._radius,方法,方法头为头为:def set_radius(self, radius):原则上原则上,需要为类的每一个私有数据域定义一个公有的访问器成员方法和一个公,需要为类的每一个私有数据域定义一个公有的访问器成员方法和一个公有的更改器成员方法。有的更改器成员方法。杭州师范大学杭州师范大学 虞歌虞歌 第第6页页Python程序设计基础程序设计基础对象和类对象和类修改后的修改后的Circle类类。