学习总结(二十六)
1.封装
1)什么是封装:对外部隐藏内部的属性,以及实现细节 , 给外部提供使用的接口
2)为什么要封装:提高安全性,隔离复杂度
3)怎么封装: 在函数前加双__就可以封装函数
4)什么样的方法应该被封装起来:一个为内部支持的方法,不应该让外界直接访问,那就封装起来
@Property标签 :将一个方法伪装成普通属性
案例:
class Student(object): @property def score(self): return self._score @score.setter def score(self,value): self._score=value
2.多态
多态不是一个具体的技术,值的是多个不同类型对象,剋有响应同一个方法,产生不同结果
class Cat(): def bark(self): print("喵喵喵") def run(self): print("四条腿跑!") def sleep(self): print("趴着睡!") class Pig(): def bark(self): print("哼哼哼!") def run(self): print("四条腿跑!") def sleep(self): print("侧躺着睡!") # 一个用来管理动物的方法 只要你传入是一个动物 我就按照动物的标准来使用 完全不用考虑你具体是什么类型 def management_animal(animal): print("==================正在溜%s=============" % animal.__class__.__name__) animal.bark() animal.run() animal.sleep()
3.常见的内置函数
1)__str__
__str__执行时机:在将对象转为字符串时执行
__str__的作用:子类可以通过覆盖该方法对打印内容的自定义
2)__del__
__del__执行时机:当对象被删除前会自动调用该方法
__del__的作用:当你的对象在创建时,开启了不属于解释器的资源,就可以使用__del__方法执行删除不属于解释器的资源该方法就是用来关闭多余资源的方法
4.反射
1)什么叫反射
反射的英文中叫反省 (自省)
面向对象中的反省 指的是,一个对象必须具备,发现自身属性,以及修改自身属性的能力;
2)反射的作用
一个对象在设计初期,可能考虑不够周全后期需要删除或修改已经存在的属性, 和增加属性
反射大部分用于框架
3)反射涉及到的方法
hasattr 判断是否存在某个属性
getattr 获取某个属性的值
setattr 新增或修改某个属性
delattr 删除某个属性
反射案例
class MY_CMD: def dir(self): os.system("dir") def ipconfig(self): os.system("ipconfig") cmd = MY_CMD() while True: name = input("请输入要执行的功能:") if hasattr(cmd,name): method = getattr(cmd,name) print(method) method() else: print("sorry this method is not exists....!")