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

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

(0)

相关推荐

  • Python对象类型及其运算方法(详解)

    基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >>> type(a1) str 创建一个字符串对象,其身份是指向它在内存中所处的指针(在内存中的位置) a1就是引用这个具体位置的名称 使用type()函数查看其类型 其值就是'abc' 自定义类型使用class 对象的类型用于描述对象的内部表示及其支持的方法和操作 创建特定类型的对象,也将该对象称为该类

  • python如何让类支持比较运算

    本文实例为大家分享了python类支持比较运算的具体代码,供大家参考,具体内容如下 案例: 有时我们希望自定义的类,实例间可以使用比较运算符进行比较,我们自定义比较的行为. 需求: 有一个矩形的类,我们希望比较两个矩形的实例时,比较的是他们的面积 如何解决这个问题? 在类中重新定义比较运算符,所有的比较运算可以简化为两个基本的比较运算,小于和等于比较 单个类比较 #!/usr/bin/python3 from math import pi class Circle(object): def __

  • 关于Python中定制类的比较运算实例

    Python中的比较运算有几种:小于.小于等于.等于.大于等于.大于.不等于等.如果我们的数据对象具有明确的物理含义,比如说数值是带有数字与物理单位的字符串组合,那么进行大小比较的时候就可以做此定制. 下面针对6种比较方法中的一种来进行定制示范,选择小于判断来做尝试. 写如下示范代码: class myClass: def __init__(self,value): self.value = value def __lt__(self,other): return int(self.value[

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

    目录 1.运算概念的理解 2.运算符的重载 2.1 算术运算符 2.2 比较运算符 2.3 成员运算 2.4 其他运算 3.Python类的多态 1.运算概念的理解 运算(Operation)是操作逻辑的抽象 运算体现一种操作逻辑,在广义角度来说任何程序都是一种运算 Python解释器通过保留方法预留了一批运算的接口,需要重载 保留方法一般对应运算符,Python中运算体现为运算符的重载 运算本质上体现了交互关系.包含关系和常规的操作关系 运算重载的限制 不能重载Python语言内置类型的运算符

  • Python面向对象编程基础实例分析

    本文实例讲述了Python面向对象编程基础.分享给大家供大家参考,具体如下: 1.类的定义 Python中类的定义与对象的初始化如下,python中所有类的父类是object,需要继承. 由于Python是动态语言,因此可以直接为对象添加属性并赋值而不必在类定义中声明 class Person(object): # 定义一个Person类 pass p = Person() # 初始化一个Person对象 p.name="xiaoming" # 对象属性赋值 Python的类初始化方法

  • Python面向对象编程(二)

    目录 一.对象的继承 1.类的构造函数继承__init__(): 2.继承关系中,对象查找属性的顺序 二.类的派生 1.派生方法一(类调用) 2.派生方法二(super) 三.类的组合 四.多父类继承问题 1.新式类(MRO)列表 2.super()方法详解 五.抽象类 六.类的封装 1.私有属性:双下划线的方式__x 2.外部使用变形访问:_类名__x 3.在继承中,父类如果不想让子类覆盖自己的方法,可以将方法定义为私有的 七.类的属性(property) 1.装饰器方式 (推荐使用) 2.经

  • Python面向对象编程基础解析(二)

    Python最近挺火呀,比鹿晗薛之谦还要火,当然是在程序员之间.下面我们看看有关Python的相关内容. 上一篇文章我们已经介绍了部分Python面向对象编程基础的知识,大家可以参阅:Python面向对象编程基础解析(一),接下来,我们看看另一篇. 封装 1.为什么要封装? 封装就是要把数据属性和方法的具体实现细节隐藏起来,只提供一个接口.封装可以不用关心对象是如何构建的,其实在面向对象中,封装其实是最考验水平的 2.封装包括数据的封装和函数的封装,数据的封装是为了保护隐私,函数的封装是为了隔离

  • Python面向对象编程基础解析(一)

    1.什么是面向对象 面向对象(oop)是一种抽象的方法来理解这个世界,世间万物都可以抽象成一个对象,一切事物都是由对象构成的.应用在编程中,是一种开发程序的方法,它将对象作为程序的基本单元. 2.面向对象与面向过程的区别 我们之前已经介绍过面向过程了,面向过程的核心在'过程'二字,过程就是解决问题的步骤,面向过程的方法设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题简单化,流程化 缺点:扩展性差 主要应用场景有:Linux内核,git,以及http服务 面向对象的程序设计

  • Python面向对象编程中的类和对象学习教程

    Python中一切都是对象.类提供了创建新类型对象的机制.这篇教程中,我们不谈类和面向对象的基本知识,而专注在更好地理解Python面向对象编程上.假设我们使用新风格的python类,它们继承自object父类. 定义类 class 语句可以定义一系列的属性.变量.方法,他们被该类的实例对象所共享.下面给出一个简单类定义: class Account(object): num_accounts = 0 def __init__(self, name, balance): self.name =

  • 关于Python面向对象编程的知识点总结

    前言 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程. 接下来我们就来了解关于Python面向对象编程的知识点吧. 类与实例 类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息. 类.属性和方法命名规范 类名通常由大写字母打头.这是标准惯例,可以帮助你识别类,特别是在实例化过程中(有时看起来像函数调用).还有,数据属性(变量或常量

  • 详解Python:面向对象编程

    面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度 python和java都是面向对象的语言.面向对象编程的特点数据封装.继承和多态 1.类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的"对象",每个对象都拥有相同的方法,但各自的数据可能不同. 在pyth

  • 如何理解python面向对象编程

    类是面向对象程序设计的一部分.面向对象程序设计或者简称为 OOP 致力于创建可重用代码块称之为类.当你想在你的程序中使用类时,你会从类中创建一个对象,这也是面向对象一词的由来.Python 并不总是面向对象的,但是你会在你的项目中用到对象.为了理解类,你需要理解面向对象的一些基础术语. 常用术语 class:类.类是代码块的主体,其中定义了建立的模型的属性和行为.这个模型可以来自于真实世界,也可以是虚拟游戏等. attribute:属性.是一系列信息的集合.在类中,一个属性通常是一个变量. be

  • 浅析Python面向对象编程

    概述 很多人接触Python,都是从爬虫开始,其实很多语言都可以做爬虫,只是Python相对其他语言来说,更加简单而已.但是Python并不止于爬虫,在人工智能,科学计算等方面的应用更加广泛.古人云:万丈高楼平地起,要想有长足的发展,打好基础很重要,本文主要讲解Python的面向对象相关知识,仅供学习分享使用,如有不足之处,还请指正. 面向对象的特征 类:用来描述相同事物的特征的集合,如:Person 类,表示人,具有人的属性和特征. 对象:通过类定义的具体的实例,如:zhangsan 表示一个

随机推荐