面向对象

Posted on 2019-02-28 22:03  杜卡迪S11  阅读(98)  评论(0编辑  收藏  举报

一、面向对象

面向过程的程序设计:注重点是过程,过程就是解决问题的步骤,即干一件事情的先后顺序,这是一种机械式的思维方式

优点是:复杂的问题流程化,简单化

缺点是:设计好的一套流程是用来解决一个问题的,这一套流程是死的,不能局部更改流水线的方法,一旦更改,整个流水线程序都得更改,牵一发动全身!

应用场景:一旦设计好就不再改变的场景

 

面向对象的程序设计:注重点是对象,在大自然中一切皆对象,在程序中也是,我们要去创造对象。但是在程序中是先有类,然后再有对象。我们要去创造对象代替我们去干事儿。

优点是:解决了程序的扩展性,可以单独修改一个部分,修改之后可以反映到整个体系中。

缺点是:编程难度大于面向过程。无法预测问题的处理流程和结果。

应用场景:需要经常变化的软件,即要经常更新的软件,比如QQ,微信,各类游戏等等

二、类与对象

类就是类别,种类,是面向对象程序设计的重要概念。对象是特征和技能的结合体,类则是一系列对象相似的技能与技能的结合体

在现实生活中;先有对象,再有类

在程序中必须是先有类,再有对象

 

关于__init__方法(详细重点)

 

方式一:

为对象初始化自己独有的特征:

class People:

  country = "China"

  x = 1

  def run(self):

    print("——>",self)

 

实例化出三个空对象:

obj1 = People()

obj2 = People()

obj3 = People()

 

为对象定制自己独有的特征:

obj1.name = 'alan'

obj1.age = 18

obj1.sex = 'male'

 

obj2.name = 'alex'

obj2.age = 38

obj2.sex = 'male'

 

obj3.name = 'oven'

obj3.age = 28

obj3.sex = 'male'

 

print(obj1.__dict__)

print(obj2.__dict__)

print(obj3.__dict__)

print(People.__dict__)

 

方式二:

为对象初始化自己独有的特征:

class People:

  country = ‘China'

  x= 1

  def run(self):

    print("——>",self)

 

实例化出三个对象:

obj1 = People()

obj2 = People()

obj3 = People()

 

为对象定制自己独有的特性:

def chu_shi_hua(obj,x,y,z):

  obj.name = x

  obj.age = y

  obj.sex = z

chu_shi_hua(obj,'alan',18,'male')

chu_shi_hua(obj,'alex',38,'male')

chu_shi_hua(obj,'oven',28,'male')

 

方式三:

为对象初始化自己独有的特征:

class People:

  country = 'China'

  x= 1

  def chu_shi_hua(obj,x,y,z):

    obj.name = x

    obj.age = y

    obj.sex = z

  def run(self):

    print('——',self)

 

obj1 = people()

People.chu_shi_hua(obj1,'alan',18,'male')

obj2 = people()

People.chu_shi_hua(obj2,'alex',38,'male')

obj3 = people()

People.chu_shi_hua(obj3,'oven',28,'male')

 

 __init__方法 强调:

  1.该方法内可以有任意的代码

  2.一定不能有返回值

 

三、属性查找

类的两种属性:数据属性和函数属性

1.类的数据属性是所有对象共享的

2.类的函数属性时绑定给对象用的

 

四.绑定到对象的方法的特殊之处:

类中定义的函数(没有被任何装饰器装饰的)是类的函数属性,类可以使用,但必须遵循函数的参数规则,

有几个参数需要传几个参数

类中定义的函数(没有被任何装饰器装饰的),其实主要是给对象使用的,而且是绑定到对象的。只要绑定给了不同的对象,就意味着是不同的绑定方法

强调:绑定到对象的方法特殊之处就是,绑定给谁就有谁来调用,谁调用就将‘谁’本身当作第一个参数传给方法,也就是自动传值(方法和__init__是一样的道理)

注意:绑定到对象方法的这种自动传值的特征,决定了在类中定义的函数都默认写一个参数self,self可以是任意名字,但约定俗成的写self。(self英文翻译就是自己的意思)