好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Python之初始面向对象

Python之初始面向对象

收录于话题

#Python入门

27个

概要:

1.面向对象和面向过程;2.面向对象如何编写;3面向对象和面向过程对比;4.面向对象三大特征

一.面向对象和面向过程:

1.面向过程.,一切以事物的流程为核心,重点在"过程",按照实物的发展流程.,之前的函数或者非函数

优点:简单.流水线式工作

缺点:可扩展性差

2.面向对象.一切以对象为中心,,万事万物皆为对象,(None除外),重点在"对象"的属性和动作.

对象:是一个抽象的概念,具有相同属性和和动作的结合体叫对象

优点:扩展性强(多态,以不同的角度来看)

缺点:编写相对比较复杂.并且上手比较难.

例子1:要把大象装冰箱, 总共分几步? 三步. 第一步. 打开冰箱, 第二步. 装大象, 第三步,关冰箱. 这是一个典型的面向过程的思维方式. 来我们如果换成面向对象呢? 很简单.想 办法造一个会钻冰箱的大象就可以了. 然后命令大象. 进冰箱.大象就乖乖的进冰箱了,具体大象如何进的冰箱由大象来完成.,类似于上帝式的思维),这就是面向对象思维. 我们面向的不再是事物发展的流程, 而是操纵某一个事物的个体. 具体的某一个事物.

总结:面向对象和面向过程各有千秋,各有各的好处.

二.面向对象如何编写.

在代码中定义一个类,就相当于画图纸.

1.语法:

class 类名:   #类是对对象的描述,统称,约束.

pass

2.创建对象:

类名()     #对象是通过类创建的

3.构造方法:

在python中我们可以是用__init__(self) 函数给对象进行初始化操作. 这个函数(方法)被称为构造函数(方法);

def __init__(self,参数1,参数2,参数3)

#属性的绑定

self.属性1=参数1

self.属性2=参数2

self.属性3= 参数3 #.即'的'的意思

构造方法是创建对象的时候自动调用的

4.方法(写在类中的函数,多个self)

在面向对象编程中的函数和一般函数不一样,有self,多了一个参数,此时不应改叫函数,应该叫方法.

def method(self):

pass

self: 当前正在执行的对象

对象.method()

5.例子:

class Car:

   #__init__构造方法,类似于默认值

   def __init__(self,color,paizi,pailiang,own):#self表示当前类的对象,当前你创建的是谁,谁来访问这个方法,这个self就是谁

       self.color=color

       self.paizi = paizi

       self.pailiang = pailiang

       self.own = own

       #print(self)#<__main__.Car object at 0x00000000024CD978>

   def run(self,speed):

       print("排量为%s的%s的车以%s的速度在飞驰" %(self.pailiang,self.color,speed))#此时的speed不要加self

   def tiaogao(self):

       print("车牌为%s的车在跳高" %(self.paizi))

car1=Car("红色","冀A12345","2.0T","ALEX")#自动调用__init__方法

#print(type(car1))#<class '__main__.Car'>

#print(car1) #<__main__.Car object at 0x00000000024CD978> 和上面的self结果一致,因为是同一个对象

car1.run(90) #排量为2.0T的红色的车以90的速度在飞驰

car1.color = "黄色"

car1.run(90) #排量为2.0T的黄色的车以90的速度在飞驰

car1.tiaogao()#车牌为冀A12345的车在跳高

car2=Car("黑色","冀A67890","1.5L","Wusir")

car2.run(50) #排量为1.5L的黑色的车以50的速度在飞驰

类与对象的关系: 类是对事物的总结.抽象的概念.类用来描述对象,对象是类的实例化的结果. 对象能执行哪些方法都由类来决定,类中定义了什么,对象就拥有什么.

三.面向对象和面向过程的对比(代码.思想)

面向对象和面向过程到底哪个好? 具体问题具体分析,没有绝对的好和不好,这一点要格外注意.

四.面向对象的三个特征:

封装.继承.多态

1.封装:把具有相同属性和功能的内容封装在一个对象中.

2.继承:子类可以自动拥有父类中除了私有属性外的其他所有内容.

在python中实现继承非常简单,在声明类的时候,在类名后面添加一个小括号, 就可以完成继承关系,这样写的好处是我们可以避免写很多重复的功能和代码;一个子类可以继承多个父类,是有顺序的,看例子.

例子:

class QinDie:

   def chi(self):

       print("亲爹给你买吃的")

   def play(self):

       print("亲爹陪你玩")

class GanDie:

   def le(self):

       print("干爹让你乐呵呵")

   def chi(self):

       print("干爹给你买吃的")

class GuNiang(QinDie,GanDie): #谁在前,先继承谁的,反过来的话,就先继承干爹的了

   def he(self):

       print("没有人陪我,自己喝酒")

   # def chi(self):

   #     print("没人陪我,自己吃肉")  #假如自己有父类的函数,执行自己的

gubumei =GuNiang()

gubumei.chi() #继承亲爹的,结果为亲爹给你买吃的

gubumei.le()#亲爹没有,继承干爹的,结果为干爹让你乐呵呵

3.多态:同一个对象.可以拥有多种形态. python原生自带多态性.

程序具有程序具有超高的可扩展性.面向对象思想的核心与灵魂.

例子:

class Animal:

   def chi(self):

       print("动物都知道吃")

class Pig(Animal):

   def chi(self):

       print("猪也知道吃")

class Dog(Animal):

   def chi(self):

       print("狗也知道吃")

class Cat(Animal):

   def chi(self):

       print("猫也知道吃")

class SiYangYuan:

   def Yang_animal(self,ani):#多态性,超强的可扩展性,无论传递进来的是什么,都统一当做动物来对待

       ani.chi()

cat = Cat()

dog=Dog()

alex = SiYangYuan()

alex.Yang_animal(cat) #猫也知道吃态

alex.Yang_animal(dog)#狗也知道吃

查看更多关于Python之初始面向对象的详细内容...

  阅读:26次