回顾类与对象—属性私有化

类:类型,数据类型的简称;

对象:实体。类型所表现出的一个实例。

对象具有封装、继承、多态三大特征。

类与对象的创建与使用:

类:类型名称 属性 方法。

        通过 class 关键字来自定义类型

        通过 __init__() 函数,初始化类属性数据。

创建对象:和执行函数一样,通过类名创建;

使用对象属性:对象的引用变量.属性名称;

使用对象方法:对象的引用变量.方法

创建对象的过程:

       a) 创建对象 调用__new__()函数,申请内存地址,创建对象;

       b) 给创建好的对象,初始化对象的数据,自动调用__init__() 函数,给对象的属性赋值;

关于创建好的对象赋值给变量,变量的类型存放数据问题

       a) 变量 = 类名称()   创建对象,引用地址赋值给变量

       b) 变量(内存地址)  堆内存中的对象

对对象的属性限制:

1  __slots___ = [ “ ” ,“ ” , “ ”]             #先声明一些可能用到的属性

 属性私有化

 1 class  Person ( object ):
 2 
 3     def __init__( self ):
 4 
 5         self.name = “old_wang”              #普通属性,表示公共属性
 6 
 7         self._weight = “50kg”                 #约定,一个下划线开头的,表示私有属性
 8 
 9          #规则:两个下划线开头的属性,不能被外界直接访问      
10          self.__belief = “你的剑就是我的剑” 

 

提供 get / set 函数来间接访问对象的私有属性:

 1 # 给私有属性设置值的方法:
 2 
 3 def set_belief(self,believe):
 4 
 5     self.__belief = believe
 6 
 7 # 获取私有属性数据的方法:
 8 
 9 def get__belief ( self ):
10 
11     return  self.__belief

 

创建一个对象并访问其属性:

1 p = Person()
2 
3 print(p.name)
4 
5 print(p._weight)
6 
7 print(p.get_belief())

 

高级封装——隐藏 get / set 方法:

使用@property 和 @setter 来将方法,扩展成属性的使用方式

@property @method.setter:

将方法隐藏起来,提高代码的安全性

@property       #给获取值的方法,添加@property

def belief(self):

    return self.__belief

@name.setter

def belief(self,b):

    self.__belief = b



a = Person()

a.belief = “我的剑还是我的剑”

 

posted @ 2017-09-06 13:57  何惜戈  阅读(553)  评论(0编辑  收藏  举报