zoukankan      html  css  js  c++  java
  • python记录_day15 面向对象初识

    一、面向过程和面向对象

    1、面向过程

    以我为中心,做一件事先干什么,在干什么,后干什么,有一套清楚完整的流程。核心是“过程”。

    优点:将要解决的问题流程化, 编写相对简单

    缺点:可扩展性差

    2、面向对象

    以对象为中心,做一件事不需要你清楚怎么做,你创建能做这件事的对象即可。对象是具体的事物,它能实现一定的功能。

    优点:可扩展性强

    缺点:编程的复杂度高于面向过程

    二、面向对象如何编写

    在现实世界中,是先有对象,然后后归类;在代码中,是先定义类,然后再创建对象

    #定义类 格式:

    class 类名:

      def  __init__(self,参数):     #这是类的构造方法,在创建对象的时候会自动执行;self指当前正在创建的对象,由python自动传值

        pass

      def  方法名(self,参数):     #类中自定义的方法

        pass

    #创建对象:

    变量 = 类名(参数)

    # 访问对象的属性信息
    对象.属性
    # 方法的访问:
    对象.方法()

     1 #定义computer类
     2 class Computer:
     3     def __init__(self,pinpai,cpu):
     4         self.pinpai = pinpai
     5         self.cpu = cpu
     6 
     7     def playgame(self,game):
     8         print("使用%s电脑打%s游戏" % (self.pinpai, game))
     9 #创建具体对象c
    10 c = Computer("lenovo", "A8")
    11 print(c.pinpai)
    12 c.playgame("lol")
    13 
    14 #创建对象c2
    15 c2 = Computer("xiaomi", "i7")
    16 print(c2.pinpai)
    17 c2.playgame("吃鸡")

    !!!注意

      对类与对象关系的理解: 类通过实例化创建一个对象,每个对象都是独立的。

      点 . 可以理解为“的”,或者“调用”  比如 c.pinpai 就是对象c的品牌;c.playgame()   对象c调用playgame方法

    三、面向对象和面向过程大PK

    那么面向对象和面向过程到底哪个好?

    具体问题,具体分析。 没有绝对的好和不好。 这点 要格外注意。

    对于大型项目,更适合用面向对象;对于小型脚本,更适合用面向过程

    四、面向对象三大特征

    (一)封装

    封装是一个很宽泛的概念,你写一个函数,可以称为封装,对象,打包成模块也都属于封装的思想。

    在面向对象思想中,把一些看似无关紧要的内容组合到一起统一进行存储和使用,这就是封装。

    对属性封装

      self.xxx = xxxx
    对方法封装

      def 方法名():

        pass

    (二)继承

    继承格式

    class 子类名(父类1,父类2):

      pass

    子类可以自动拥有父类中除了私有内容外的其他所有内容

    (三)多态

    同一个对象多种形态

     1 class Animal:
     2      def chi(self):
     3          print("动物就知道吃")
     4 class Pig(Animal):
     5      def chi(self):
     6          print("猪在吃")
     7 class Haski(Animal):
     8      def chi(self):
     9          print("哈士奇在吃")
    10 class Alasika(Animal):
    11      def chi(self):
    12          print("阿拉斯加在吃")
    13 
    14 class SiYangYuan:
    15      def yanng_animal(self, ani):  #本来这里的参数要的是Animal类的对象,但是传入Pig类,Haski类,Alasika类的对象也可以,这就是多态
    16          ani.chi()
    17 
    18 zhu = Pig()
    19 erha = Haski()
    20 ala = Alasika()
    21 alex = SiYangYuan()
    22 alex.yanng_animal(zhu)
    23 alex.yanng_animal(erha)  
    24 alex.yanng_animal(ala)                  

    多态的好处:

    程序具有超高的可扩展性。

    面向对象思想的核心与灵魂。

    python自带多态,我们一直在用多态,但是感觉并不明显。 比如. 我们创建一个变量a = 10 , 我们知道此时a是整数类型。但是我们可以通过程序让a = "alex", 这时, a又变成了字符串类型。

  • 相关阅读:
    Shell脚本——DHCP自动部署
    Shell脚本——DNS自动部署
    (四)跟我一起玩Linux网络服务:DHCP服务配置之中继代理
    Java-线索二叉树的实现
    Java-堆排序
    Java-二叉树-插入、删除、遍历
    Java-进制转换
    Java--消除重复数字后的最大值
    Java-动态规划-最多苹果数量的方法
    Java-Pi的几种实现
  • 原文地址:https://www.cnblogs.com/zhang-yl/p/9917432.html
Copyright © 2011-2022 走看看