day7
对象:实例化一个类之后得到的对象
封装
吧一些功能的实现细节不对外暴露
封装
代码的重用
继承
组合
self.Person = Person(self,Person_obj)
吧Person实例化后的对象赋值给self.Person
单继承
多继承
2.7 经典类,深度优先 新式类,广度优先
3.x 都是广度优先
class Foo(object)
先覆盖再继承再添加自己的功能
def __init__(self,name,age,sex,salary)
super(Foo,self).__init__(name,age,sex)新式类继承 若多继承,先找到哪个就执行哪个
父类.__init__(self,name,age,sex) 经典类继承 若多继承得写多个,但是只执行先找到的那个父类
父类.__init__(self,name,age,sex) 经典类继承 若多继承得写多个,但是只执行先找到的那个父类
self.salary = salary
多态
接口的重用
静态方法 只是名义上归类管理 实际上在静态方法里访问不了类或实例中的任何属性
类方法 只能访问类属性,而不能访问实例属性
属性方法 吧一个方法变成一个静态属性
1 什么是反射
反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。
2 python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)
四个可以实现自省的函数
下列方法适用于类和对象(一切皆对象,类本身也是一个对象)
#反射
#通过字符串映射或修改程序运行时的状态、属性、方法,有以下4个方法
#getattr(object,name,default=None) #根据字符串去获取obj对象里的对应的方法的内存地址
#hasattr(object,name) #判断一个对象里是否有对应的字符串的方法映射
#setattr(x,y,v)
#delattr(x,y)