类的定义和使用

类的定义:Python编程中类的概念可以比作是某种类型集合的描述,如“人类”可以被看作一个类,然后用人类这个类定义出每个具体的人——你、我、他等作为其对象。类还拥有属性和功能,属性即类本身的一些特性,如人类有名字、身高和体重等属性,而具体值则会根据每个人的不同;功能则是类所能实现的行为,如人类拥有吃饭、走路和睡觉等功能。

类的三大核心特性:封装、继承、多态。

封装:在类里面数据属性和行为用函数的形式封装起来,访问时直接调用,不需知道类里面具体的实现方法;封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。

示例:

#!/usr/bin/env python
class People(): #定义类
    def __init__(self,name,age): #构造函数,初始化类的属性
        self.name=name
        self.age=age
    def info(self): #声明一个info方法
        print("%s is %s year old"%(self.name,self.age))

p=People("Peter",25) #类的实例化
p.info()  #调用类方法
输出:
Peter is 25 year old
      

继承:继承原有类的所有方法,实现代码的重用。

继承的大致逻辑: 抽象(抽取类似或比较像的部分)==>继承(子类继承父类的方法和属性)==>派生(子类在父类的方法和属性的上添加新的方法和属性)

示例:

#!/usr/bin/env python
class People():
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def info(self):
        print("%s is %s year old"%(self.name,self.age))
class Man(People): #继承类
    def __init__(self,name,age,sex): #初始化类的属性
       super().__init__(name,age) #声明继承父类的属性
       self.sex=sex
    def man_info(self):
       print("%s is a %s"%(self.name,self.sex))
m=Man('Peter',25,"boy")
m.info()
m.man_info()
输出:
Peter is 25 year old 
Peter is a boy

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。

#!/usr/bin/env python
class Animal():
    def __init__(self,name):
        self.name=name
    def talk(self):
        print("i'm %s"%self.name)
class People(Animal):
    def __init__(self,name):
        self.name=name
class Dog(Animal):
    def __init__(self,name):
        self.name=name
P=People("human")
P.talk()
D=Dog("Dog")
D.talk()
输出:
i'm human
i'm Dog

如何理解面向过程和面向对象?

    面向过程就是分析出解决问题所需要的步骤,然后通过函数把这些步骤一步一步实现,使用的时候一个个依次调用。
    优点:极大的降低了写程序的复杂度,只需要顺着执行的步骤,堆叠代码。
    缺点:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。

    面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
    优点:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。
    缺点:可控性差,无法向面向过程的程序设计一样流水线式,不能精准的预测问题的处理流程与结果。

    面向过程的思维方式是分析综合。面向对象的思维方式是构造。

posted @ 2018-08-19 16:32  imcati  阅读(710)  评论(0编辑  收藏  举报