python面向对象语法总结

python面向对象

本文针对面向对象编程做了相关python语法的梳理,供大家学习参考,有关python基础、python常见数据类型详解大家可看我之前写过的文章,链接在下面。

python基础语法
python常见数据类型总结

类和对象

类的定义
  • 成员变量

    class 类名:
        变量1 = None
        变量2 = None
    
  • 成员方法

    成员方法需要使用self传入参数来标记,self用于调用类中的其他变量,在实际使用中可不理会,但需注意在类中成员方法的定义时需要指定第一个参数为self

    class 类名:
        变量1 = None
        变量2 = None
        
        def(self,a):
            print(f"{self.变量1},{a}")      
    
  • 内置方法

    • 构造方法 :_init_

      同样需要指定self关键字,用来调用成员变量

      使用__init__标识构造方法,创建对象时,方法自动执行

      self.变量名子相当于声明变量,故在python中变量可提前声明,也可不提前声明

      class 类名:
          变量1 = None
          变量2 = None
          
          def(self,a):
              print(f"{self.变量1},{a}")
          
          def __init__(self,变量1,变量2):
              self.变量1 = 变量1
              self.变量2 = 变量2
      
    • 字符串方法 :_str_

      直接打印对象会打印地址值,__str__方法可改变打印对象对应的输出值

      类似于Java的toString()方法

          def __str__(self):
              return f"name:{self.name},age:{self.age},gender:{self.gender}"
      
    • 类比较方法:_lt_

      用于对象之间的比较,可指定具体比较的变量

      小于与大于

          def __lt__(self, other):
              return self.age<other.age
      
    • 类比较方法:_le_

      用于对象之间的比较,可指定具体比较的变量

      小于等于与大于等于

          def __le__(self, other):
              return self.age<=other.age
      
    • 相等比较方法:_eq_

      用于类对象之间的相等判断,若没实现则默认比较内存地址

      可指定具体比较值

          def __eq__(self, other):
              return  self.age==other.age
      
对象创建
# 空对象
对象名 = 类名()

# 构造方法创建对象
对象名 = 类名(变量1,变量2)

# 变量的赋值与修改
对象名.变量名 =

封装

面向对象思想将事物分为属性与行为,现实事物中,有对外开放的属性与行为,也有不对外开放的属性与行为,将属性与行为分为开放与私有,私有的属性与行为不给类对象使用,只给内部属性与行为 自己使用,以达到隔离区分,体现的即为封装思想

  • 私有变量

    以"__"开头

        __example = None
    
  • 私有方法

    以"__"开头

        __example = None
        def __example_method(self):
            print("I am a private method")
    
  • 例子:

    class test:
        __example = None
        def __example_method(self):
            print("I am a private method")
    
        # 访问私有变量与方法
        def use_my_private(self):
            self.__example = 1
            self.__example_method()
    

继承

基于已有的类,修修改改成为新的类,默认继承所有,当继承后满足需求,在新类中不想写新内容时,使用pass关键字标识,

单继承
  • 当前新类称为子类,被继承的类称为父类
  • 语法:class 子类(父类):
多继承
  • 子类允许有多个父类,父类之间使用,隔开
  • 父类间的顺序代表继承顺序,若变量或方法名相同,优先继承前面父类的变量与方法
  • 语法:class 子类(父类1,父类2):
复写
  • 当继承的变量、方法不满足新需求,可在新类中重写变量名、方法名相同的变量与方法,覆盖原有的继承过来的变量与方法
  • 复写变量、方法后,默认访问到复写的变量与方法,若想重新调用父类被复写的变量、方法,使用super()调用或使用父类名调用

多态

同一种行为,不同运行状态。在某些方法中,传入参数为父类对象,但传入子类对象也可以分别输出对应子类的方法结果 ,称为多态。

抽象类
  • 含有抽象方法,即含有只定义了方法名,但具体方法体未实现的方法,使用pass关键字作为方法体

    def add(x,y):
        pass
    
  • 总结:一般抽象类作为顶层设计的抽象类只定义方法,不具体实现方法,不同子类根据功能实现方法。某方法以抽象类对象为形参,则可传入该抽象类的子类,并根据不同子类获得不同工作状态

异常

  • 所有异常捕获

    try:
        可能出现异常的语句
    except:
        可能的异常出处理方式
    
  • 多异常捕获

    try:
        可能出现异常的语句
    except(error1,error2) as 异常别名:
        print(异常别名)
    
  • 没有异常时的执行:else(可选项)

  • 无论有没有异常都执行:finally(可选项)

    try:
        可能出现异常的语句
    except:
        异常处理方式
    else:
        没有异常的处理方式
    finally:
        有没有异常都要执行
    
  • 异常传递性:异常可传递到最高调用者

    def func1():
        #以下语句异常
        print(1/0)
    def func2():
        func1()
    def main():
        try:
            func2()
        except Exception as e:
            print(f"出现异常了,异常信息为:{e}")
            
            
    main()
        
    

注解

由于在python中,变量不需要先指定类型,所以有注解,并且能让IDE工具识别提示是有必要的

变量注解
  • 格式1

    变量名:类型名 = 值

    #变量注解
    num:float = 1.0
    #数据容器注解
    list1:list = [1,2,3]
    #类对象注解
    class test:
        pass
    test1:test = test()
    
  • 格式2

    # type :类型

    num = 2.0  # type:float
    lis1 = [1,2,3]  # type:list
    list2 = [1,2]   # type:list[int]
    
函数(方法)形参、返回值注解
  • 形参注解

    形参1:形参类型,形参2:形参类型

    def add(x:int,y:int):
        return x+y
    
  • 返回值注解

    函数 -> 返回值类型:

    def add(x:int,y:int)->int:
        return x+y
    
联合类型注解 Union

用于提示列表、元组等多类型的注解提示,需要导入Union包

  • 案例

    from typing import Union
    def prints(data:Union[int,str]):
        print(data)
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值