python类的高级函数

news/2024/4/28 3:08:39/文章来源:https://blog.csdn.net/run_in_road/article/details/129928848

 

类的高级函数

__str__

如果定义了该函数,当print当前实例化对象的时候,会返回该函数的return信息

用法:

def __str__(self):

        return str_type

参数:无

返回值:一般返回对于该类的描述信息

__getattr__

当调用的属性或者方法不存在时,会返回该方法定义的信息

用法:

def __getattr__(self, key):

        print(something...)

参数:

    key:调用任意不存在的属性名

返回值:可以是任意类型也可以不进行返回

# coding: utf-8class Test(object):def __str__(self):return 'this is a test class'def __getattr__(self, item):return '这个key:{}并不存在'.format(item)t = Test()
print(t)
print(t.a)
print(t.b)

__setattr__

拦截当前类中不存在的属性与值

用法:

def __setattr__(self, key, value):

        self.__dict__[key] = value

参数:key当前的属性名,value当前的参数对应的值

返回值:无

__call__

本质是将一个类变成一个函数

用法:

def __call__(self, *args, **kwargs):

        print('call will start')

参数:可传任意参数

返回值:与函数情况相同可有可无

# coding: utf-8class Test(object):def __str__(self):return 'this is a test class'def __getattr__(self, item):return '这个key:{}并不存在'.format(item)def __setattr__(self, key, value):self.__dict__[key] = valueprint(self.__dict__)def __call__(self, a):print('call func will start')print(a)t = Test()
print(t)
print(t.a)
print(t.b)
t.name = 'xiaomu'
print(t.name)
t('dewei')result:
this is a test class
这个key:a并不存在
这个key:b并不存在
{'name': 'xiaomu'}
xiaomu
call func will start
dewei

综合使用:

# t.a.b.c 链式操作
class Test2(object):def __init__(self, attr=''):self.__attr = attrdef __call__(self, name):return namedef __getattr__(self, key):if self.__attr:key = '{}.{}'.format(self.__attr, key)else:key = keyprint(key)return Test2(key)t2 = Test2()
name = t2.a.b.c('dewei')
print(name)result = t2.name.age.sex('ok')
print(result)
a
a.b
a.b.c
dewei
name
name.age
name.age.sex
ok

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_303078.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb-RequestResponse的使用

Request&Response 今日目标 掌握Request对象的概念与使用掌握Response对象的概念与使用能够完成用户登录注册案例的实现能够完成SqlSessionFactory工具类的抽取 1,Request和Response的概述 Request是请求对象,Response是响应对象。这两个对象在我们…

深入理解Java虚拟机:JVM高级特性与最佳实践-总结-7

深入理解Java虚拟机:JVM高级特性与最佳实践-总结-7 类文件结构概述无关性的基石 虚拟机类加载机制概述类加载的时机 类文件结构 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步 概述 我们写的程…

在阿里做了6年软件测试,4月无情被辞,想给划水的兄弟提个醒

先简单交代一下背景吧,某不知名 985 的本硕,17 年毕业加入阿里,以“人员优化”的名义无情被裁员,之后跳槽到了有赞,一直从事软件测试的工作。之前没有实习经历,算是6年的工作经验吧。 这6年之间完成了一次…

060:cesium设置网格Grid材质

第060个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置网格材质,请参考源代码,了解GridMaterialProperty的应用。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共93行)相关API参考:专栏目标示例效…

chatgpt赋能Python-python3_9_6怎么用

Python 3.9.6简介 Python 3.9.6是2021年6月28日发布的Python编程语言的最新版本,它提供了一些有用的新功能和改进,包括优化的解释器性能和可变构造体。它是一种功能强大的编程语言,既易于学习又易于使用,非常适用于开发Web应用程…

SaaS 产品如何选择设计协作工具?

文章内容转载腾讯 CoDesign 随着互联网及其衍生技术的发展,企业比以往更依赖内容去吸引、去培养自己的用户,寻求转化。小鹅通就是在微信生态中帮助企业通过知识服务去实现内容分发和流量聚合,帮助企业沉淀用户,提供深度私域运营服…

自定义颜色编辑选取对话框

一、简介 Qt中已经有一些封装好的对话框,比如QMessageBox、QColorDialog等,使用起来快捷方便,但缺点是我们无法为它们自定义样式,所以可能难以“融入”我们的项目。既然如此,那就自己做一个把。抱着这样的想法&#x…

如何成功申请计算机软件著作权【申请流程完整记录】

致谢 :此博文的编写包括软著的申请,均借鉴了大佬【万里守约】的博客 — 提示:此博文仅适合个人申请,因为我是自己一个人的项目,自己一个人申请软著 文章目录 前言:一、网站注册与实名认证二、材料准备软著申…

ChatGPT工作提效之初探路径独孤九剑遇强则强

ChatGPT工作提效之遇强则强 前言一、如何使用ChatGPT二、ChatGPT实战应用三、ChatGPT会叫的小孩有奶吃工具类的交互问答类的交互开发类的交互 前言 读《笑傲江湖》西湖比剑时,对于独孤九剑1的解读印象颇为深刻。令狐冲被任我行这个高手激发出许多精妙的剑招。这独孤…

nvm-windows安装和配置

1.下载nvm-windows https://github.com/coreybutler/nvm-windows/releases 进入后如下图 选择nvm-setup.exe下载 2.安装 2.1 运行安装包,同意协议,下一步 2.2 选择nvm的安装目录,安装路径名最好不要有空格 2.3 点击Next,设…

linux 串口改为固定

在/etc/udev/rules.d 目录下新建定义规则的文件 1. 文件名要按规范写否则改动无效2. 规则文件必须以.rules 结尾3. 规则文件名称必须遵循 xx-name.rules 格式(xx 为数字或字母,name 为规则名称),例如 99-serial-ports.rules。4. 规…

chatgpt赋能Python-python3_8_5怎么保存

Python 3.8.5:什么是它,为什么它重要,以及如何安装和保存? Python是当今世界上最受欢迎的编程语言之一。Python 3.8.5是该语言的最新版本,它引入了一些重要的改进和新特性。这篇文章将介绍Python 3.8.5并向您展示如何…

windows搭建pyspark环境详细教程

一.安装jdk及配置环境变量: 下载地址: https://www.oracle.com/java/technologies/downloads/#java8-windows 安装步骤: 下载后点击安装,中途可以自定义安装路径,最后查看安装路径: 开始配置系统环境变量&#xff1a…

AJax和Axios的讲解

目录 Ajax Ajax基本介绍 同步异步 原生Ajax 原生的Ajax使用方式 Axios 基本介绍 Axios的基本使用 发送 get 请求 发送 post 请求 Axios快速入门 请求方法的别名 练习 Ajax Ajax基本介绍 Ajax: 全称Asynchronous JavaScript And XML,异步的JavaScript和XML…

Thematica: 炫彩主题与黑暗奇观的Vue3之旅

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录 一、介绍1.1 博客主题和目的1.2 Vue 3简介二、炫彩主题2.1 准备工作2.2 安装必要依赖2.3 创建Vue项目2.4 设置全局样式

计算机中存储器详解

文章目录 一、存储器的分类1. 按存储介质分类2. 按存取方式分类 二、存储器的层次结构三、CPU、缓存、主存、辅存之间的通信关系1. 缓存-主存层次2. 局部性原理3. 主存-辅存层次 一、存储器的分类 1. 按存储介质分类 2. 按存取方式分类 二、存储器的层次结构 在讲存储器的层次…

实验 2:树形数据结构的实现与应用

东莞理工学院的同学可以借鉴,请勿抄袭 1.实验目的 通过实验达到: 理解和掌握树及二叉树的基本概念; 理解和掌握二叉树的顺序存储结构、链式存储结构; 理解和掌握采用二叉链式存储结构下二叉树的各种遍历操作的思想及 其应用&a…

PMP课堂模拟题目及解析(第11期)

101. 一家咨询公司的负责人启动一个项目来扩大公司提供的服务数量,这公司具有竞争优势、出色的企业知识以及卓越的声誉,高管团队担心与增加新服务相关的负面业务结果的可能性。若要评估负面业务结果的可能性和影响,项目经理应该使用什么&…

Eolink 出席 QECon 深圳站,共同探讨软件质量和效能发展

5月12日至13日,由 QECon 组委会和深圳市软件行业协会联合主办的「QECon全球软件质量&效能大会」成功召开,作为国内 API 全生命周期解决方案的领军者,Eolink 受邀参加此次大会。 大会中,Eolink SaaS 产品负责人崔嘉杰、高级售…

以SpringMVC入门案例分析服务器初始化过程、单次请求流程

文章目录 1,SpringMVC概述2,SpringMVC入门案例2.1 需求分析2.2 案例制作步骤1:创建Maven项目步骤2:补全目录结构步骤3:导入jar包步骤4:创建配置类步骤5:创建Controller类步骤6:使用配置类替换web.xml步骤7:配置Tomcat环境步骤8:启动运行项目步骤9:浏览器…