Class(类):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。
对象是类的实例。这里表示 类里可以有多个属性,也可以有多个方法。同时也有自己的字段。
这里的属性 官方语言叫做 类变量,属于这个类的公用部分,谁都可以来用,所以通常不作为实例变量使用,就是一个符号。而方法,则是在类中!
1. 类的继承(直接在类名后面括号里卖弄写入要继承的类名)
子类会继承父类的所有的功能!注 (如果子类中定义与父类同名的方法或者属性,则会自动覆盖覆盖父类相对应的方法或属性)
注意: 子类中在对 __init__ 内的变量在其他任何方法上做修改,内外值都会随着改变
子类重写了父类的属性或者方法后,父类的信息都会改变
多重继承: class A classB c = classC(A,B) 顺序按照AB 顺序来(多重继承代码容易混乱,应尽量避免使用)
Super() 调用显示父类的属性或函数 在重写的时候调用可以延续父类的属性或方法,子类可选是否借用父类
格式为: super(父类,参数self).__init__() 父类函数
静态方法: 使用前提,需要一个参数不能让别人进行修改,在非特定环境下该静态变量或方法外部修改无效,只有在特定环境下修改才可行
绑定:python严格要求方法需要有实例才能被调用,这种限制其实就是python所谓的绑定概念。
1、issubclass(class, classinfo)
a、一个类被认为是其自身的子类
b、classinfo可以是类对象组成的元组,只要class与其中任何一个候选子 类,则返回True
2、isinstance(object,classinfo)
a、如果第一个参数不是对象,则永远返回False
b、如果第二个参数不是类或者由类对象组成的元组,会抛出一个TypeError 异常。
3、hasattr(object,name):测试一个对象是否有指定的属性
4、getattr(object, name[, default]):返回对象指定的属性值
5、setattr(object,name,value):设置指定属性的值
6、delattr(object,name):删除对象中指定的属性,如果属性不存在抛出 异常。
2、多态(不同的对象对同一类方法的不同响应)
多态: 著名的鸭子测试: 当我们看到一只鸟走起来像鸭子,游泳起来像鸭子,叫起来也像鸭子,那么这只鸟就可以被称为鸭子
意思是:一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前的方法属和属性的集合决定的。
注意: 类型检查是毁掉多态的利器 type() isinstance() issubclass() 慎用!
类的封装和私有化: 方法 或者属性 前面添加上 __ 即可 这样的话外部无法访问,但可以通过方法来访问
如果想在外部访问私有属性或方法前添加上 @property 可以直接访问 对象.属性
3、self(对象的方法中会传递一个self参数)
由一个类可以生成多个对象,对象之间都极为相似,来源于同一个类,不同的对象调用方法时传递self参数告诉python当前
4、python的魔法方法(总是被双下划线包围)
1、__init__(self, param1, param2, ...):类似于java中的构造方法
ps:init方法不能有返回值
2、__new__(cls[,...]):对象实例化时调用的方法,返回一个类对象
3 、__del__(self):当对象被销毁的时候(垃圾回收机制)自动调用
5、python定义私有属性或方法
在python中定义私有的变量只需要在变量名或函数名前面加上"__"两个下划线,那么这个函数或变量就会变成私有的了。