首页 > 代码库 > python之面向对象

python之面向对象

面向对象的程序设计的

优点是:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。

缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝也无法预测最终结果。于是我们经常看到一个游戏人某一参数的修改极有可能导致阴霸的技能出现,一刀砍死3个人,这个游戏就失去平衡。

应用场景:需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等都是面向对象的程序设计大显身手的好地方

面向对象的程序设计并不是全部。对于一个软件质量来说,面向对象的程序设计只是用来解决扩展性。

技术分享

 

从一组对象中提取相似的部分就是,类所有对象都具有的特征和技能的结合体。

在python中,用变量表示特征,用函数表示技能,因而类是变量与函数的结合体,对象是变量与方法(指向类的函数)的结合体

类是数据与函数的结合,二者称为类的属性

类有两种作用:属性引用和实例化

>>> Garen.camp #引用类的数据属性,该属性与所有对象/实例共享

Demacia

>>> Garen.attack #引用类的函数属性,该属性也共享

<function Garen.attack at 0x101356510>

>>> Garen.name=Garen#增加属性

>>> del Garen.name #删除属性

对象/实例只有一种作用:属性引用  

对象/实例本身只有数据属性,但是python的class机制会将类的函数绑定到对象上,称为对象的方法,或者叫绑定方法,绑定方法唯一绑定一个对象,同一个类的方法绑定到不同的对象上,

属于不同的方法,内存地址都不会一样

对象的绑定方法的特别之处在于:obj.func()会把obj传给func的第一个参数。

创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性

在obj.name会先从obj自己的名称空间里找name,找不到则去类中找,类也找不到就找父类...最后都找不到就抛出异常 

python之面向对象