• Python 14 面向对象一


    初识面向对象

    1. 面向对象和面向过程

    1. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤,
      即, 先是是什么 后是什么. 基于该思想编写程序就好比在编写一套流水线. 是一种机械式的编程思维
    class Car:  # 创建类(车)
        pass
    c = Car() # 创建一辆车
    c.color = "red"
    c.pai = "京A66666"  #车的各种信息
    c.pailiang = "1.6T"
    print(c.color)
    print(c.pai)
    print(c.pailiang)  # 直接可以打印
    

    优点: 负责的问题流程化, 编写相对简单
    缺点: 可扩展性差

    2. 面向对象如何编写

    说了这么多. 面向对象的程序如何编写呢? 想想在我们的世界中. 我们如何造一辆车?先由设计师来设计图纸. 设计师在图纸上勾勒出⻋应该是xx样的. 应该有什么. 以及这台车的功能等等. 然后交给工厂进行代理. 根据设计师设计的图纸去创造车. 程序也艺样. 我们需要
    先设计一个图纸. 在图纸上把我要创建的对象进行描述. 然后交给工人去创建对象.
    在这里, 我们画图纸的过程需要我们写类

    class Car:   
      	def __init__(self, color, pai, pailiang): #  init创建类时自动使用 ,self 是创建对象
      		self.color = color   # 创建属性 
      		self.pai = pai
      		self.pailiang = pailiang
       	def run(self, speed):   # 这里叫方法
                    print("车可以跑%s迈" % speed)
    c1 = Car("red", "京A66666", "1.6T")
    c2 = Car("white", "京B22222", "2,0T")
    print(c1.color)
    print(c2.color)
    
    c1.run(100) # 这时. c1 这辆车可以跑了
    c2.run(200) # c2 也可以跑
    

    优点: 可扩展性强
    缺点: 编程的复杂度高于面向过程

    3. 面向对象三大特征

    1.面向对象三大特征: 封装, 继承, 多态. 只要是面向对象编程语言. 都有这三个特征

    1.封装

    class对属性封装
    self.xxx = xxxx
    对方法封装

    2.继承

    子类可以自动拥有父类中除了私有属性外的其他所有内容
    python中实现继承非常简单. 在声明类的时候, 在类名后添加一个小括号,
    就可以完成继承关系. 那么什么情况可以使用继承呢? 单纯的从代码层次上来看. 两个类具有相同的功能或者特征的时候. 可以采用继承的形式. 提取一个父类, 这个父类中编写着两个类相同的部分. 然后两个类分别取继承这个类就可以了. 这样写的好处是我们可以避免写很多重复的功能和代码. 如果从语义中去分析的话. 会简单很多. 如

    class Yaoguai:
     	 def chi(self):
     	 print("我是妖怪, 我就会吃人")
    class BaiGuJing(Yaoguai): # 白⻣精继承妖怪
     	 pass
    bgj = BaiGuJing()  
    bgj.chi()   # 先找自己,自己没有留找父类
    

    2.多态

    同一个对象多种形态

    class Animal:
      def chi(self):
      	print("动物就知道吃")
    class Pig(Animal):
      def chi(self):
      	print("猪在吃")
    class Haski(Animal):
      def chi(self):
      	print("哈士奇在吃")
      class Alasika(Animal):
      def chi(self):
      	print("阿拉斯加在吃")
    class SiYangYuan:
      def yanng_animal(self, ani):
        ani.chi()
    zhu = Pig()
    erha = Haski()
    ala = Alasika()
    alex = SiYangYuan()
    alex.yanng_animal(zhu)
    alex.yanng_animal(erha)
    alex.yanng_animal(ala)
    
    

    多态的好处: 程序具有超高的可扩展性. 面向对象思想的核心与灵魂. python自带多态

  • 相关阅读:
    php+Nginx 安装手册
    PostgreSQL 生成uuid
    登陆服务器错误: Disconnected:No supported authentication methods available
    安装Tengine
    netty解决方法 io.netty.util.IllegalReferenceCountException: refCnt: 0, increment: 1
    IntelliJ Idea 2016,2017,2018 注册码 免费激活方法
    jdbc连接"Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driv"
    mysql错误:you are using update mode and you tried to update a table without a where that uses a key column to disable safe mode
    spring介绍;安装;使用
    设置maven仓库阿里镜像
  • 原文地址:https://www.cnblogs.com/NATO/p/9923082.html
Copyright © 2020-2023  润新知