python Day7
面向对象
###类 对象 内存图
class province(object): #object代表新式类
__country = 'china' #静态字段 __代表私有 只能类自己内部使用 无法被继承
def __init__(self,sheng): #构造方法
self.sheng = sheng #普通字段
def f1(self): #普通方法 obj = province() obj.f1()
pass
@classmethod #类方法 province.f2()
def f2(cls): #只能一个参数,必须是cls,province将自身作为参数传递给cls
pass
@staticmethod #静态方法 province.f3() 随便参数 无需创建对象 只需要创建类可直接调用
def f3():
pass
###面向对象三大特性
封装、继承、多态
###python,主要使用封装
1.多个方法共用一组变量,封装到对象中
2.模板创建多个对象
###继承
1.基类,派生类。
2.python可以多继承
3.新式类和经典类
4.广度优先,深度优先 广度优先需要满足两个规则,新式类,基类如果是经典类也继承与新式类
###类成员
字段
普通,静态 最本质的区别是内存中保存的位置不同
普通字段属于对象 普通字段在每个对象中都要保存一份
静态字段属于类 静态字段在内存中只保存一份
方法
普通, 触发者 对象 至少一个self self = 当前对象
类方法, 触发者 类 只有一个cls cls = 当前类
静态 触发者 类 任意参数
属性
属性对方法的变种,变成访问时相似字段
@property
Data = property(方法名)
obj.Data = 执行方法,并获取方法的返回值
新式类中的属性:
@property
@方法名.setter
@方法名.deleter
###类成员修饰符
公有
私有
__开头 只能类自己内部访问,无法被继承
###类的特殊成员
__doc__
表示类的描述信息
__module__ 和 __class__
__module__ 表示当前操作的对象在那个模块
__class__ 表示当前操作的对象的类是什么
__init__
构造方法,通过类创建对象时,自动触发执行。
__del__
析构方法,当对象在内存中被释放时,自动触发执行。
__call__
对象后面加括号,触发执行。
__dict__
类或对象中的所有成员