Python-day11 面向对象复习总结

泪湿孤枕 提交于 2020-01-26 03:00:58

面向对象的概念

什么是面向对象: 思想, 完成任何功能, 都找一个对象帮你完成, 关注结果

有哪些对象? 类, 函数, 模块, 包

面向对象三个特征: 封装,继承,多态

面向对象的语法

  • 类 使用于 描述 具有相同属性和方法的 一类事务

    语法:

    class 类名(object):
        类属性 = 值
        __类私有属性 =def __init__(self,参数1,参数2...):
            # 初始化方法
            self.属性1 = 参数1
            self.属性2 = 参数2
            
        # 实例方法
        def 方法名(self,参数):
            pass
        
        # 类方法
        @classmethod
        def 方法名(cls,参数):
            pass
        
        # 静态方法
        @staticmethod
        def 方法名(参数):
            # 即不是实例上的属性也不使用类属性
            pass
        
        #魔术方法
        def __new__(cls,*args,**kwargs):
            return super().__new__(cls)
        
        def __str__(self):
            return "对象的描述信息"
        
        def __del__(self):
            # 对象销毁执行
            # 用于处理清理工作(收尾工作)
    
  • 对象

    # 创建对象
    对象 = 类名(参数)
    
    # 使用对象
    对象.属性名
    对象.方法名()
    
    # 类使用类属性和类方法,静态方法.类属性名
    类.类方法名().静态方法名()
    
    # 补充扩展了解
    对象.类属性
    对象.类方法()
    对象.静态方法()
    
  • 继承

    • 继承的概念: 子类继承父类,直接使用父类上定义的属性和方法
    • 继承的分类
      • 单继承
      • 多层继承
      • 多继承了解
    • 私有属性: 不能被继承
    • 重写: 子类中出现与父类相同名字的成员就是重写
      • 因为父类中的方法不满子类需求
    • 多态:
      • 继承
      • 重写
      • 调用相同方法,传入不同类型的值, 结果不同
    • 如果获取对象的信息
      • type() 对象的类型
      • dir() 查看对象上的所有属性和方法
      • isinstance(obj,类): 判断对象是否是指定类的实例对象

    单例模式

    • 单例概念: 一个类有且只有一个对象

    • 如何实现

      class 类名(object):
          __instance = None #保存对象
          __isInit = False #开始没有初始化
          def __new__(cls,*args,**kwargs):
              if not cls.__instance:
                  cls.__instance = super().__new__(cls)
              return cls.__instance
          
          def __init__(self,*args,**kwargs):
              if not self.__isInit:
                  # 初始化
                  # 已经初始化
                  self.__isInit = True
                  
      单例对象 = 类名(参数..)
      

异常

  • 异常的完整语法
#完整的语法
try:
    # 可能出现异常的代码
except 异常类名 as e:
    # 获取异常错误信息
    print(e)
else:
    # 没有任何异常走到这里
finally:
    # 无论如何都走到这里
  • 如何抛出异常
raise 异常对象----->raise 异常类名("提示信息")
  • 如何自定义异常
class 异常类名(Exception):
    def __init__(self,*args,**kwargs):
        # 初始化工作
        
    def __str__(self):
        retrun "错误提示"
   

raise 异常类名("错误信息")

模块和包

  • 模块和包概念

    模块: 就是一个py文件

    包: 就是一个文件夹, 在文件中需要一个_init_.py包的初始化文件

  • 模块和包的使用

import 模块名/.模块名
from/模块 import 模块/函数
from.模块 import 函数1,函数2
fromimport 模块 as 别名 
  • 模块/包查找顺序

    • 内置模块

    • 标准模块 python安装路径/Lib目录

    • 当前文件所在路径

    • 第三方包安装路径 python安装路径/Lib/site-packages目录中

    • 自定义包的查找路径

      ​import sys

      ​sys.path.append(“路径”)
      sys.path.insert(0,“路径”)

    • 自定义的包或者模块的名字不要与 内置,标准,第三方模块重名.

给程序传参数

# 格式: 命令  参数
python xxx.py
  • 给python文件传递参数
# 参数传递给python文件
python xxx.py 参数1 参数2 

# 如何接收传递参数
import sys
sys.argv: 保存了程序传递进来参数
    1. 列表
    2. 每个元素都是字符串
    3. 第一个元素 python文件的路径
    4. 之后的参数就是传递个python文件的参数
    
 例子:
    python yum2.py  install  mysql
    # 接收参数
    import sys
    sys.argv[1]# 参数值 install
    sys.argv[2]# 参数值 mysql
   

列表推导式

  • 概念: 轻量级的 通过 for…in…循环快速生成列表

    ​ 根据 表达式 推算, 从而创建列表

  • 语法

    完整语法:
        [表达式 for 变量 in 列表 简单语句]
    

    [i**2 for i in range(0,11)]
    [i for i in range(0,21) if i%2==1] #奇数
    

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!