本节知识点:私有化属性;私有化方法;property属性;__new__方法;单列属性;错误与异常处理;python动态添加属性和方法;__slots__属性
一:私有属性
概念:为了更好的保存属性安全,即不能随意修改,将属性定义为私有属性,添加一个可调用的方法访问
语法:二个下划线开头,声明该属性私有,不能在类的外部被使用或直接访问
使用私有属性的场景:1.把特定的一个属性隐藏起来,不想让类的外部进行直接调用 2.想保护这个属性,不想让属性的值随意的去改变 3.保护这个属性 不想让派生类【子类】去继承
私有属性总结:
私有化的【实列】属性,不能在外部使用,可以在类的内部随意的使用;子类不能继承父类的私有化属性【只能继承父类公共的属性和行为】
二:私有化方法
概述:私有化方法和私有化概念一样,不允许外部使用,防止子类随意重写
三:property
访问和修改私有属性的方法
方法一:通过行为去修改和访问
方法二:
通过property访问
方法三:装饰器(@property @函数名.setter)
四:__new__
作用:创建并返回一个实列对象,如果只调用了一次,就会得到一个对象
注意事项:该方法是在对象实例化的时候调用的第一个方法;在该方法中,不能自己调用自己即:return cls.__new__(cls)
五:单列模式
概述:不管创建多少次对象,类返回的对象都是最初创建的。不会在新建其他对象
六:异常处理
在执行程序中,遇到错误代码时,程序将终止,报错,无法继续继续执行后边代码,出现了错误提示,这就是异常
语法格式:
try:
可能出现错误的代码
except:
出错之后执行的代码块
else:
没有出错的代码块
finally:
有没有出错都执行的代码块
try except语句:
try else:
try --finally
七:__slots__
作用:限制class实例属性的添加:只有在__slots__变量中的属性才能添加,否则会添加失败,子类不会继承父类的__slots__
在继承关系中使用__slots__
子类未声明该方法时:那么是不会继承父类的__slots__,这时子类可以随意添加属性
子类声明该方法时:子类声明了__slots__时,继承父类的__slots__,也就是说子类__slots__的范围为自身__slots+父类的__slots__
八:动态添加属性和方法
动态添加属性
动态添加方法
需要用types



