面向对象

面向对象编程介绍

类和对象

定义类

创建对象

_init_方法

应用:创建多个对象

self

隐藏数据

 

面向对象编程介绍

 区分面向对象和面向过程

举例:

买电脑(两种方式)
1.
*网上搜资料查询
*根据自己预算和需求,定制电脑型号
*去市场找电脑实体店筛选
*业务员推荐介绍各种款式
*砍价n分钟,价格6k
*下单付款,带走笔记本
*使用了一段时间,各种问题
注意:强调的是步骤、过程,每一步都是自己亲自实现

2.
*找精通电脑的朋友
*交易
注意:强调的是精通电脑的朋友,不需要签字实现所有的步骤,只需要调用“精通电脑的朋友”就可以解决问题,这种解决问题的思路就是面向对象

 注意:用面向对象的思维解决问题的重点就是:

1.当遇到一个需求的时候不需要自己去实现,如果是自己一步步实现的话就是面向过程

2.应该调用一个专门做这种事情的人来做

3.面向对象是基于面向过程的

 

面向对象(Object-oriented:简称:OO)

定义为:按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法

面向对象编程(Object oriented Pogramming-OOP)是一种解决软件复用的设计和编程方法。这种方法把软件系统中相近相似的操作逻辑和操作应用数据、状态,以类的形式描述出来,以对象实例的形式在软件系统中复用,以、达到提高软件开发效率的作用。

 

类和对象

*面向对象编程的2个非常重要的概念:类和 对象

*对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念---类

*类就像当与制造飞机时的图纸,可以用它来进行制造的飞机就相当于对象

 

1.类

人以类聚,物以群分
具有相似内部状态和运动规律的实体的集合(或统称、抽象)
具有相同属性和行为事物的统称

解释:

  1.类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在。

  2.一个类可以找到多个对象

 

2.对象

1.某一个具体事物的存在,在现实世界中可以看得见摸得着的。
2.可以直接使用的

 

3.类和对象的关系

  类就是创建对象的模版

 

3.类的构成

 类(class)由3个部分构成

  *类的名称:类名

  *类的属性:一组数据

  *类的方法:允许对进行操作的方法(行为)

 

4.类的抽象

  拥有相同(或者类似)属性和行为的对象都可以抽象出一个类

  方法:一般名词都是类

 

定义类

  定义一个类,格式如下:

class 类名:
     方法列表
#定义一个Car类

#定义类
class Car:
      #方法
      def getCarInfo(self):
          print('铅笔个数:%d,颜色%s '%(self.wheelNum,self.color))
      def move(self):
          print("车正在移动...")

说明:

    *定义类时有2种,新式类和经典类,上面的Car是经典类,如果是Car(object)则为新式类

    *类名的命名规则建议按照“大驼峰”

 

创建对象

   如果说上面定义了Car类,就好比给车子做了设计图纸;那么创建对象就是说把图纸交给工程师去制造了。

   python中,可以根据已经定义的类去创建出一个个对象

   创建对象的格式为:

    

对象名:类名()

创建对象:

#定义类
class Car:
    #移动
    def move(self):
          print('车在行驶~')
    #鸣笛
    def too(self):
          print("车在鸣笛~")

#创建一个对象,并用变量SDP来保存它的引用
SDP = Car()
SDP.color = '白色'
SDP.wheelNum = 4  #4个轮子
SDP.move
SDP.tppt
print(SDP.color)
print(SDP.wheelNum)

总结:

   *SDP = Car(),这样产生了一个Car的实例对象,此时也可以通过实例对象SDP来访问属性或者方法

   *第一次使用SDP.color = ‘白色’ 表示给SDP这个对象添加属性,如果然后再次出现SDP.color = XXX 表示对属性进行修改

   *SDP是一个对象,它拥有属性(数据)和方法(函数)

 

_init_()方法

解释:刚刚给SDP这个对象添加了2个属性(车轮数量和车的颜色),如果需要再次创建对象的话,需要进行添加属性,会比较麻烦;

是否有办法在创建对象的时候,顺便把车这恶搞对象的属性给设置了?

使用:   _init_() 方法

 1.使用方式

def 类名:
    def _init_():
        pass

2.init()方法的调用

#定义车类
class Car:
    def _init_(self):
        self.wheelNum = 4
        self.color = '蓝色'
    
    def move(self):
        print'车在行驶,目标:云南'

#创建对象
SDP = Car()
print('车的颜色为:%s ' %SDP.color)
print('车轮数量:%d ' %SDP.wheelNum)

总结:当创建Car对象后,在没有调用 _init_()方法的前提下,SDP就默认有了2个属性whellNum和color,原因是 _init_()方法是在创建对象后,就立刻被调用了。

 

既然在创建完对象后_init_()方法已经被默认的执行了,那么能否让对象在默认调用_init_()方法的时候传递一些参数呢?如果可以,该怎样传递?

#定义车类
class Car:
    def _init_(self , newwheelNum , newcolor):
        self.wheelNum = newwheelNum
        self.color = newcolor

    def move(self):
        print'车在行驶,目标:云南'

#创建对象
SDP = Car(4,‘green’)
print('车的颜色是:%s' %SDP.color)
print('车轮数量是 %d ' %SDP.wheelNum)

 总结:

*_init_()方法,在创建一个对象时默认被调用,不需要手动调用

*_init_(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么_init_(self)中出现了self作为第一个形参外还需要2个形参,例如_init_(self,x,y)

*_init_(self)中的self参数,不需要开发者传递,python解释器会自己进行传递

 

应用:创建多个对象

 *根据上两节创建一个Car类

 *创建出多个车对象,比如SDP、GUID等

 

self 

1.理解self

#定义一个类
class Animal:
     #方法:
     def _init_(self,name):
          self.name = name
     def printName(self):
          print('名字为:%s' %self.name)

#定义一个函数
def myprint(animal):
    animal.printName()

dog1 = Animal('小毛')
myprint(dog1)

dog2 = Animak(‘小对’)
myprint(dog2)

总结:

*所谓的self,可以理解为自己,就是对象自身的意思

*某个对象调用其他方法时,python解释器就会把这个对象作为第一个参数传递给self,所以开发人员只需要传递后面的参数即可。

 

隐藏数据

 修改对象的属性

1.直接通过对象名修改  

SweetPotato.cookedLevel = 5

2.通过方法间接修改

SweetPotato.cook(5)

 

总结:如果一个对象与另外一个对象有一定的关系,那么一个对象可用是另外一个对象的属性。

posted @ 2018-09-16 08:12  FlameLuo  阅读(152)  评论(0编辑  收藏  举报