类的定义: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
如何理解面向过程和面向对象?
面向过程就是分析出解决问题所需要的步骤,然后通过函数把这些步骤一步一步实现,使用的时候一个个依次调用。
优点:极大的降低了写程序的复杂度,只需要顺着执行的步骤,堆叠代码。
缺点:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
优点:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。
缺点:可控性差,无法向面向过程的程序设计一样流水线式,不能精准的预测问题的处理流程与结果。
面向过程的思维方式是分析综合。面向对象的思维方式是构造。