目录
  • 1、运算概念的理解
  • 2、运算符的重载
    • 2.1 算术运算符
    • 2.2 比较运算符
    • 2.3 成员运算
    • 2.4 其他运算
  • 3、python类的多态

    1、运算概念的理解

    运算(operation)是操作逻辑的抽象

    • 运算体现一种操作逻辑,在广义角度来说任何程序都是一种运算
    • python解释器通过保留方法预留了一批运算的接口,需要重载
    • 保留方法一般对应运算符,python中运算体现为运算符的重载
    • 运算本质上体现了交互关系、包含关系和常规的操作关系

    运算重载的限制

    • 不能重载python语言内置类型的运算符
    • 不能新建运算符,只能通过重载完成
    • is,and,not,or不能被重载

    2、运算符的重载

    2.1 算术运算符

    一元运算符:+-~
    二元运算符:+-*///%divmod()  pow() **<<>>&^

    2.2 比较运算符

    比较运算符:<、<=、==、!=、>、>=

    保留方法 对应操作
    .__lt__(self, other) obj < other
    .__le__(self, other) obj <= other
    .__eq__(self, other) obj == other
    .__be__(self, other) obj != other
    .__gt__(self, other) obj > other
    .__ge__(self, other) obj >= other

     两个对象比较操作的运算重载

    2.3 成员运算

    成员获取:[]def.eversed()
    成员判断:in

    保留方法 对应操作 描述
    .__getitem__(self, key) obj[k] 定义获取对象中序号k元素的运算逻辑,k为整数
    .__setitem__(self, key, v) obj[k] = v 定义赋值对象中序号k元素的运算逻辑
    .__delitem__(self, key) del obj[k] 定义删除对象中序号k元素的运算逻辑
    .__reversed__(self) obj.reversed() 定义对象逆序的运算逻辑
    .__contains__(self, item) item in obj 定义in操作符对应的运算逻辑

    2.4 其他运算

    python内置函数:rep(),str(),len(),int(),flaot,complex(),round(),bytes(),bool(),format(),.format(常用方法)

    保留方法 对应操作 描述
    __repr__(self) repr(obj) 定义对象可打印字符串的运算逻辑
    __str__(self) str(obj) 定义对象字符串转换的运算逻辑
    __len__(self) len(obj) 定义对象长度操作的运算逻辑
    __int__(self) int(obj) 定义对象整数转换的运算逻辑
    __float__(self) float(obj) 定义对象浮点数转换的运算逻辑
    __complex__(self) complex(obj) 定义对象复数转换的运算逻辑
    __round__(self) round(obj) 定义对象四舍五入的运算逻辑
    __bytes__(self) bytes(obj) 定义对象字节串转换的运算逻辑
    __bool__(self) bool(obj) 定义对象布尔运算的运算逻辑
    .__format__(self, format_spec) obj.format() format(obj) 定义对象格式化输出的运算逻辑

    3、python类的多态

    多态 _(polymorphism)_是针对方法,体现方法灵活性的多态;简单的说,他包含两部分

    参数类型的多态:一个方法能够处理多个类型的能力

    python的函数/方法没有类型声明限制,天然支持参数类型的多态性

    python编程理念在于:文档约束,而非语法约束

    对不同参数类型的区分以及功能,需要有程序员完成

    参数形式的多态:一个方法能够接受多个参数的能力

    python的函数/方法可以支持可变参数,支持参数形式的多态性

    python的类方法也是函数,函数的各种定义方式均有效

    对不同参数个数以及默认值的确定,需要由程序员完成

    多态是oop的一个传统概念,python天然支持多态,不需要特殊语法,示例代码如下所示:

    import abc
    class animal(metaclass=abc.abcmeta): #同一类事物:动物
        @abc.abstractmethod
        def talk(self):
            pass
    
    class cat(animal): #动物的形态之一:猫
        def talk(self):
            print('say miaomiao')
    
    class dog(animal): #动物的形态之二:狗
        def talk(self):
            print('say wangwang')
    
    class pig(animal): #动物的形态之三:猪
        def talk(self):
            print('say aoao')
    

    到此这篇关于python面向对象编程之类的运算的文章就介绍到这了,更多相关python类的运算内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!