类:类型,数据类型的简称;
对象:实体。类型所表现出的一个实例。
对象具有封装、继承、多态三大特征。
类与对象的创建与使用:
类:类型名称 属性 方法。
通过 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 = “我的剑还是我的剑”