首页 > 编程语言 >系统学习Python——装饰器:“私有“和“公有“属性案例-[为Python3.X重定义运算符重载方法的途径:验证运算符方法]

系统学习Python——装饰器:“私有“和“公有“属性案例-[为Python3.X重定义运算符重载方法的途径:验证运算符方法]

时间:2024-03-24 19:01:16浏览次数:32  
标签:__ Python 运算符 私有 名称 重载 Public Python3

分类目录:《系统学习Python》总目录


通常接口代理被要求添加对运算符重载方法的支持,以便正确地委托调用。然而,在我们特定的私有应用中,它也引起了一些额外的设计选择。特别地,运算符重载方法的私有性依每个实现而有不同:

  • 它们调用__getattr__,重定位混合类要求仝部访问的__X__名称在Public装饰中列出,或者当运算符重载在客户端中出现时使用Private替代。在大量使用重载的类中,Public可能是不切实际的。
  • 它们完全地绕过__getattr__,就像这里编写的内联方案和self._wapped混合类,这二者没有这些限制,但是它们阻碍内置操作成为私有,并且造成内置操作分发在按名称的显式__X__调用和Python2.X的默认经典类中不对称地工作。
  • Python2.X的经典类拥有这里第一项的限制,仅仅因为全部的__X__名称都自动导向__getattr__
  • 运算符重载名称和协议在python2.X和3.X之间是不同的,使得真正的跨版本装饰不再简单易用(例如,Public装饰器可能需要为这两个系列分别列出名称)。

这里的最后策略待定,但是一些接口代理倾向于允许__X__运算符名称在委托时总是可以未经检查地通过。

然而在通常的情形下,为容纳Python3.X的新式类作为委托代理,需要有充分大量的额外代码一一原则上讲,每一个不再作为普通实例属性自动分发的运算符重载方法,都将需要在通用工具类中繁冗地定义,就像这个私有装饰器一样。这就是为什么我们的代码中省略了这一扩展:潜在地有50多种这样的方法!因为其全部类都是新式的,所以基于委托的代码在Python3.X中会更加有难度,尽管不是必然不可实现。

参考文献:
[1] Mark Lutz. Python学习手册[M]. 机械工业出版社, 2018.

标签:__,Python,运算符,私有,名称,重载,Public,Python3
From: https://blog.csdn.net/hy592070616/article/details/136919544

相关文章

  • Python实战:信号处理:signal模块
    1.引言在Unix-like操作系统中,信号是一种异步通知机制,用于在特定事件发生时通知进程。信号可以由内核、其他进程或进程自身发送。Python的signal模块提供了对Unix信号处理的接口,允许Python程序捕获和处理信号。掌握信号处理对于编写健壮、响应性好的Python程序至关重要。2......
  • Python实战:异步I/O:asyncio事件循环
    1.引言在Python中,异步I/O是一种非阻塞的I/O操作方式。与传统的同步I/O操作不同,异步I/O允许程序在等待I/O操作完成的同时执行其他任务。asyncio是Python标准库中用于编写异步代码的库,它提供了一个事件循环来处理异步操作。事件循环是asyncio的核心组件,它负责调度和执行异步......
  • Python实战:深拷贝与浅拷贝
    1.引言在Python中,对象是通过对内存中的数据进行引用来实现的。当我们创建一个对象并将其赋值给另一个变量时,实际上是将这个对象的引用复制给了另一个变量。这意味着,如果原始对象发生改变,引用该对象的变量也会受到影响。为了解决这个问题,Python提供了深拷贝和浅拷贝两种方......
  • python + playwright 非无痕模式打开网页下载json数据
    使用python从网页下载资料,生成一些图表使用,因为json数据需要SSO验证,不然没有Token是无权限获取的,所以使用playwright无痕模式打开不行,要使用非无痕模式。从网页报表上把json数据转成Excel保存代码没有多华丽,只是满足了那时候需要這一操作的需求。点击查看代码fromplaywrig......
  • python处理excel,删除行和列+去除重复列
    删除指定的行与列点击查看代码importxlwingsasxw#下載下來的Excel,列和行有很多空白的,要先刪除掉.#打开Excel文件workbook=xw.Book('test.xlsx')sheet=workbook.sheets[0]#删除1-12行sheet.range('1:12').api.EntireRow.Delete()#删除A-G列sheet.range(......
  • Python+openpyxl 拆分Excel合并的单元格
    图片数据是举例子。在实际使用中,从需求网页上下载的生产资料是带有合并单元格的,但在处理的时候需要拆分开,不然不好操作。使用openpyxl可以实现操作如果没有安装openpyxl库,首先安装openpyxl在命令行执行pipinstallopenpyxl点击查看代码importopenpyxlpath=r"test.......
  • python + xlwings 根据条件筛选Excel里的所需资料
    实际有用,有效,满足我的个人需要。点击查看代码importxlwingsasxwdeffiler():try:app=xw.App(visible=False,add_book=False)app2=xw.App(visible=False,add_book=True)wb=app.books.open('new_file.xlsx')#打开原始数据表......
  • BioPython模块的安装
     001、确认是否已经安装(base)[root@pc1~]#pythonPython3.11.4(main,Jul52023,14:15:25)[GCC11.2.0]onlinuxType"help","copyright","credits"or"license"formoreinformation.>>>importBioTraceback......
  • 【保姆级讲解C语言中的运算符的优先级】
    ......
  • 数学建模 (线性规划 python代码 两种)
    线性规划: 线性规划(LinearProgramming,LP)是一种数学优化方法,用于解决一类特定类型的最优化问题。该问题的目标是在给定的一组线性约束条件下,找到使某个线性目标函数达到最大或最小的变量值。线性规划问题可以表示为以下标准形式:最小化(或最大化):Z=c^T*x约束条件:Ax<=b,......