面向对象1---类与对象
1>概念性的东西
类:一个类即是对一类拥有相同属性的对象的抽象、模板。在类中定义了这些对象的都具备的属性(variables(data))、共同的方法,比如人类,物品类等
属性:类包含很多特征,把这些特征用程序来描述的话,叫做属性,比如人类有年龄、姓名等都叫做属性,一个类中,可以有多个属性
方法:类似人类除了有一些年龄,身高等“静态”属性,还有“动态”方法,比如吃饭,睡觉等,这些动词用程序来描述就叫做方法。
实例(对象):一个对象即是一个类的实例化后实例,一个类必须经过实例化后方可在程序中调用,一个类可以实例化多个对象,每个对象亦可以有不同的属性,就像每个具体存在的人就是人类实例出来的对象,人与人之前有共性,亦有不同
实例化:把一个类转变为一个对象的过程就叫实例化
2>__init__函数与 self参数
构造方法 __init__
亦称初始化方法,在例实例化过程中自动执行,目的是初始化实例的一些属性(实例一些初始化参数,或执行一些其它的初始化工作)。__init__只要一实例化,就会自动执行,每个实例通过__init__初始化的属性都是独有的
self
记住一句话:self就是指实例化后的对象自己。为什么要这样写?因为类的所有属性和方法都是(被所有实例化之后的对象)共用的,如果每个对象想调用函数时使用自身独有的数据,就需要把自身传递进去,这样 self.Name就等同于p1.Name
3>面向过程与面向对象
面向过程:核心是“过程”,过程:解决问题的步骤
优点:复杂问题流程化;缺点:可扩展性差,流程中做任何改动,可能会影响后续所有流程,牵一发而动全身
适用场景:需求改动小,单一流程类项目或任务等
面向对象:核心是“对象”,对象:上帝视角,一切皆对象,任何都是类型或者类(类型和类一个概念)实例出来的对象
优点:可扩展性强,类中增加任何属性或方法,所有对象均能直接调用
适用场景:需求改动大,用户层应用的项目(如游戏,互联网应用等)
4>类 的操作
4.1 属性的增删改查
4.2 实例化
5> 对象的操作
类方法绑定于对象
类属性始终不变(正如人一样,人类有很多相同的特征(类属性),但却有不同的行为(类方法))
6>类即类型
秉承着 python中一切皆为对象的原则,python3中类与类型是一个概念
举个list数据类型的例子,各种操作简直和类如出一辙,如下。