Python面向对象编程之类的运算

编辑: admin 分类: python 发布时间: 2021-11-14 来源:互联网
目录
  • 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() **<<>>&^|

    保留方法 对应操作 描述 .__neg__(self) -obj 定义对象取负的运算逻辑 .__pos__(self) +obj 定义对象取正的运算逻辑 .__abs__(self) abs(obj) 定义对象绝对值的运算逻辑 .__invert__(self) ~obj 定义对象取反的运算逻辑 .__add__(self, other) obj + other 定义了两个对象加法的运算逻辑 .__sub__(self, other) obj - other 定义了两个对象减法的运算逻辑 .__mul__(self, other) obj * other 定义了两个对象乘法的运算逻辑 .__truediv__(self, other) obj / other 定义了两个对象除法的运算逻辑 .__floordiv__(self, other) obj // other 定义了两个对象整数除的运算逻辑 .__mod__(self, other) obj % other 定义了两个对象模的香港高防服务器http://www.558idc.com/hkgf.html运算逻辑 .__divmod__(self, other) divmod(obj, other) 定义了两个对象除模的运算逻辑 .__pow__(self, other) obj ** other 定义对象幂的运算逻辑 .__lshift__(self, other) obj << other 定义对象左移的运算逻辑 .__rshift__(self, other) obj >> other 定义对象右移的运算逻辑 .__and__(self, other) obj & other 定义两个对象位于运算逻辑 .__xor__(self, other) obj ^ other 定义两个对象位异或的运算逻辑 .__or__(self, other) `obj other`

    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类的运算内容请搜索hwidc以前的文章或继续浏览下面的相关文章希望大家以后多多支持hwidc!