【python的静态方法,classmethod方法和__call___魔法方法】

news/2024/5/21 0:35:49/文章来源:https://blog.csdn.net/m0_49586319/article/details/127739742

classmethod魔法方法和staticmethod

  • staticmethod,静态方法
  • classmethod,绑定类方法
  • __call__,可调用类类方法

staticmethod,静态方法

在python中,使用静态方法可以实现不需要实例化对象的绑定就可以直接调用的函数,换句话
就是可以把独立的函数写入到一个类里面

xx:公有变量

_xx:单下划线,私有化属性或方法,类对象和子类可以访问,from somemodule import *禁止导入

__xx:双下划线,私有化属性或方法,无法在外部直接访问(名字改写不能访问)

xx:双前后下划线,系统定义名字(用户避免使用)

xx_:单下划线,用于避免与Python关键词的冲突

class A:__x=520_y=100@staticmethoddef func():print('静态方法例子')#如果我不直接一个实例化对象直接调用func函数
A.func()
#我使用一个实例化例子再去访问func函数,效果是一样的,
#都是输出:静态方法例子
a=A()
a.func()
#a._y#本行结果与下一行结果一致
A._y
a._A__x

在这里插入图片描述

classmethod,绑定类方法

类方法可以实现对类的绑定,关键字 @classmethod
比如我想知道本身这个类被实例化了几次,就可以使用该方法

class A():count=0def __init__(self):A.count+=1@classmethoddef get_class_used(cls):print(f"一共实例化了{cls.count}次对象")a1=A()
a2=A()
A.get_class_used()

输出:一共实例化了2次对象

call,可调用类类方法

python的__call__魔法方法
class A:def __init__(self,exp):self.exp=expdef __call__(self,base):return base**self.exp
#callable(A)  返回True
#这里A相当于是一个可以调用的对象了(python里面对象分为可以调用和不可以调用)
a=A(2)
a(3)#相当与计算3的平方
a(10)#相当于计算10的平方

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

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

相关文章

【Unity3D】游戏物体操作 ④ ( 选中多个游戏物体操作 | 复制选中物体 | 聚焦选中物体 | 激活、禁用选中物体 | 对齐选中物体 )

文章目录一、选中多个游戏物体操作1、Scene 场景窗口选中多个物体2、Hierarchy 层级窗口选中多个物体二、复制选中物体1、使用 " Ctrl D " 快捷键复制物体2、使用 右键菜单 | Duplicate 选项复制三、聚焦选中物体四、激活、禁用选中物体五、对齐选中物体一、选中多个…

计算机组成原理浮点数表示

浮点数表示 浮点数的表示分为阶码和尾数; 比如3.026*1011;阶码是11;尾数是3.026; 对于阶码: 阶符为正,小数点向后移n位(n表示阶的大小); 阶符为负,小数点向前移n位(n表示阶的大小&a…

AttributeError: ‘bytes‘ object has no attribute ‘encode‘异常解决方案

AttributeError: bytes object has no attribute encode是:“字节”对象没有属性的编码的意思。 很明显,是编码格式的问题,例如:已经是byte格式的字符串类型,二次进行encode的时候就会出现这个bug,示例如下…

【猿创征文】Vue3 企业级优雅实战 - 组件库框架 - 1 搭建 pnpm monorepo

前两篇文章分享了基于 vite3 vue3 的组件库基础工程 vue3-component-library-archetype 和用于快速创建该工程的工具 yyg-cli,但在中大型的企业级项目中,通常会自主搭建这些脚手架或加速器。优雅哥希望每位前端伙伴能知其所以然,故接下来的文…

基础IO(下)——Linux

文章目录1. 理解文件系统1.2 背景知识1.2 inode vs 文件名1.3 软硬链接2. 动态库和静态库2.1 静态库.a2.1.1 如果想写一个库?(编写库的人的角度)2.1.2如果我把库给别人,别人怎么用呢?(使用库的人的角度&…

中医-通过舌象判断身体状况

本文分享通过舌象判断身体的整体状况(中医角度),得出一个可供辨证的参考,并且可以根据舌象做出相关的饮食调整,本文主讲理论,相关舌象图片易引人不适,如需找相关图片,可根据本文中的…

git rebase实战

例如, 在B分支上做rebase。 git rebase 之前确保当前分支是最新的。 切换到B分支: 1.git rebase origin/master(以origin/master分支为基线,合入master分支的修改到origin/master)此时会提示冲突文件 2.对冲突文件进行修改 3.git add 4.git …

网络面试-ox07http中的keep-alive以及长/短连接

非Keep-Alive: 早起HTTP1.0, 浏览器发起http请求需要与服务器建立新的TCP连接,请求处理后连接立即关闭。 缺点:每个这样的连接,客户端与服务器都要分配TCP的缓冲区和变量,这给服务器带来严重的负担。 Keep-Alive: 默认持久连接&am…

上海亚商投顾:沪指录得6连阳 两市成交再度破万亿

上海亚商投顾前言:无惧大盘大跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 三大指数今日横盘震荡,收盘集体小幅上扬,日K线均录得6连阳。虚拟现实概念股集体拉升&#…

最详细、最全面的【Java日志框架】介绍,建议收藏,包含JUL、log4j、logback、log4j2等所有主流框架

前言 本文为 【Java日志框架】 相关知识,之前已经介绍了Java日志框架的发展历史:Java日志框架的发展历史。 这篇文章将对日志的概念与作用,JUL日志框架,Log4j日志框架,Logback日志框架,Log4j2日志框架&…

详谈一下:Java中的基本类型变量(8种)与引用类型变量的区别

对于Java语言中的基本类型,不知道各位老铁是否还能全能说出来!! Java语言中的8种基本类型: byteshortintlongfloatdoublecharbollen 上面8种Java语言中的基本类型,所对应的变量,就是基本类型变量&#xf…

【代码随想录】二刷-字符串

字符串 代码随想录如果想让这套题目有意义&#xff0c;就不要申请额外空间。 344.反转字符串 双指针 // 时间复杂度O(n),执行n/2次交换 // 空间复杂度O(1) class Solution { public:void reverseString(vector<char>& s) {int n s.size();for(int left 0,right n-…

浅谈CAD如何精准导入图新地球并应用在工程行业

摘要&#xff1a;本文以重庆九建某某高校施工项目前期准备和施工验证工作为依托&#xff0c;以图新地球精准导入CAD为研究对象&#xff0c;总结了一套相对成熟且完善的应用技术。该应用技术能在实际地形和现状数据中迅速找到施工点的大致位置&#xff0c;为前期工程勘测争取足够…

22下半年软考集成广东卷(中项)真题在线估分

22年下半年广东软考也已经落下帷幕了&#xff0c;整理的2022年下半年软考集成广东卷答案已经出炉&#xff01; 在线估分预测一下分数~ 大家锦鲤附身&#xff01;都能过&#xff01; 第5题 ”十四五"规划和2035远景目标纲要就打造&#xff08; &#xff09;新优势、加快&a…

5. 凸集和凸函数

凸集和凸函数1.仿射集2.凸集3.向量范数4.凸集的性质5.凸函数6.凸函数的一阶二阶条件7. 保凸运算8.凸函数和凸集的关系1.仿射集 2.凸集 仿射集 -------> 凸集 凸集 ----//----> 仿射集 3.向量范数 4.凸集的性质 5.凸函数 6.凸函数的一阶二阶条件 7. 保凸运算 凸函数的性…

海外拼多多Temu最新动态,怎么快速提升销量和权重?(测评补单)

上线一个多月后&#xff0c;拼多多跨境业务Temu的日均GMV突破了150万美元&#xff0c;入驻商家数量近3万个&#xff0c;SKU在30-40万&#xff0c;涵盖了24个一级类目。 据报道&#xff0c;目前Temu的日活成交用户在6万左右&#xff0c;下载用户接近80万&#xff0c;30天的复购…

vue3与vue2的不同内容

一、main.js入口文件的不同 // 引入的不再是构造函数&#xff0c;引入了一个名为creacteApp的工厂函数 import { createApp } from vue import ./style.css import App from ./App.vue // 创建应用示例对象--->app const app createApp(App) //把组件APP挂载到#app节点上 …

(最新版2022版)剑指offer之动态规划题解

&#xff08;最新版2022版&#xff09;剑指offer之动态规划题解[剑指 Offer 42. 连续子数组的最大和][剑指 Offer 47. 礼物的最大价值][剑指 Offer 46. 把数字翻译成字符串][剑指 Offer 48. 最长不含重复字符的子字符][剑指 Offer 48. 矩形覆盖][剑指 Offer 买卖股票的最好时机…

SpringSecurity Oauth2实战 - 06 拦截器获取用户登录信息并存储到本地线程ThreadLocal

文章目录1. 获取用户登录信息1. 用户信息共享的ThreadLocal类 UserInfoShareHolder2. 写一个拦截器 UserInfoInterceptor3. 配置拦截器 CommonWebMvcAutoConfiguration2. 源码分析1. 认证用户通过access_token访问受限资源2. 进入过滤器 OAuth2AuthenticationProcessingFilter#…

自动驾驶技术综述2:自动驾驶决策规划模块算法介绍

一、前言&#xff1a; 在自动驾驶整个软件框架中&#xff0c;决策规划模块有着重要的作用。决策规划模块一般也叫Planning模块&#xff0c;在整个自动驾驶系统中&#xff0c;Planning模块相当于人类驾驶员的大脑&#xff0c;它的上游是地图、导航、感知、预测这些模块&#xf…