2015-12-13 第八天笔记整理-第一部分

看了其他同学的笔记,再看看自己的。>< 。。。。继续努力吧!!

面向对象有两种字段

静态&普通

    静态字段位于类中,不属于类的任何一个方法,但是类中的方法都有机会调用这个静态字段。在内存中,静态字段存在类所属的内存地址中

    普通字段属于类的__init__方法,类中的其他方法都有机会通过self.xxx,xxx代表了字段名字,来调用这个字段。在内存中,普通字段存放在类实例化以后生成的对象中。

【普通字段需要通过对象来访问】【静态字段通过类访问】

应用场景: 通过类创建对象时,如果每个对象都具有相同的字段,那么就使用静态字段

image

参考下面的内存图:

面向对象有三种方法

普通&静态&类

普通方法 静态方法 类方法
由对象调用 由类调用 由类调用
至少一个self参数 无默认参数 至少一个cls参数
执行普通方法时,自动将调用该方法的对象赋值给self   执行类方法时,自动将调用该方法的复制给cls
  要加装饰
@staticmethod
要加装饰
@classmethod

类的方法调用

image

面向对象中的属性

通过 @property 把方法转化成属性,所以属性其实是普通方法变种

定义时 普通方法的基础上添加 @property 装饰器  
定义时 属性仅有一个self参数  
调用时

无需括号
属性:foo_obj.prop

方法:foo_obj.func()

属性存在意义是:访问属性时可以制造出和访问字段完全相同的假象

定义属性有两种方式

装饰器 静态字段
在方法上应用装饰器 在类中定义值为property对象的静态字段
image image
  • 第一个参数是方法名
  • 调用 对象.属性 时自动触发执行方法
  • 第二个参数是方法名
  • 调用 对象.属性 = XXX 时自动触发执行方法
  • 第三个参数是方法名
  • 调用 del 对象.属性 时自动触发执行方法
  • 第四个参数是字符串
  • 调用 对象.属性.__doc__ ,此参数是该属性的描述信息

经典类中的属性只有一种访问方式,其对应被 @property 修饰的方法
  新式类中的属性有三种访问方式,并分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法

由于静态字段方式创建属性具有三种访问方式,我们可以根据他们几个属性的访问特点,分别将三个方法定义为对同一个属性:获取、修改、删除

面向对象经典的使用场景

使用相同的字段

通过模板创建人物


其他相关

isinstance

issubclass

异常处理

exception

错误类型

先详细,后万能

原文地址:https://www.cnblogs.com/echorep/p/5052221.html