python笔记: staticmethod classmethod
1 前言
一般来说,如果我们要使用类中的方法,一般是实例化类中的对象,然后通过示例来调用函数,比如:
class myClass(object):def __init__(self,x):self.x=xdef printx(self):print(self.x)c=myClass(4) c.printx() # 4
这时候,如果我们不实例化对象,直接用类名来调用函数,是不行的
myClass.printx()''' TypeError Traceback (most recent call last) <ipython-input-61-249ab211dc29> in <module> ----> 1 myClass.printx()TypeError: printx() missing 1 required positional argument: 'self' '''
2 classmethod
类方法与类一起使用,因为它的参数始终是类本身。(实例的参数是看不到的)
但是,如果我们希望同时与类交互呢?我们可以使用@classmethod装饰器来创建类方法
class myClass(object):x=1def __init__(self):self.x=x@classmethoddef printx(class_obj):print(class_obj.x)c=myClass()
c.printx()
#1
myClass.printx()
#1
这样的好处是: 不管这个方式是从实例调用还是从类调用,它都用第一个参数把类传递过来.
3 staticmethod
有一些跟类有关系的功能,但在运行时又不需要实例和类参与。在这种情况下。可以用到静态方法
静态方法对类一无所知,只处理参数。
class myClass(object):def __init__(self,x):self.x=x@staticmethoddef printx():print('hello')c=myClass(1)
c.printx()
#hellomyClass(1).printx()
#hello
python笔记: staticmethod classmethod相关推荐
- python的staticmethod,classmethod和装饰器以及闭包的爱恨情仇
1.这篇文章写的很好,理清了staticmethod和classmethod 2.万物皆对象,需要理清什么是对象?对象和类之间的关系.类和object之间的关系. 3.staticmethod就像是一 ...
- python的staticmethod,classmethod和装饰器以及闭包
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/ibelieve8013/article ...
- 初学者python笔记(静态属性、类方法、静态方法、类的组合)
文章目录 类的三大方法 1.静态属性 2.类方法.静态方法 3.三大方法总结 类的组合 1.用法分析 2.面试案例分析 本篇文章是上一篇:初学者python笔记(面向对象编程.类与对象)的后续篇,是关 ...
- python中的@classmethod的作用
推荐 <Python 中的 classmethod 和 staticmethod 有什么具体用途?> 一.简介 1.1 描述 classmethod 修饰符对应的函数不需要实例化,不需要 ...
- tkinter 笔记: radiobutton 选择按钮(莫烦python笔记)
1 主体框架还是那个主体框架 window = tk.Tk() window.title('my window') window.geometry('500x500') 2 设置tkinter的文字变 ...
- tkinter 笔记:列表部件 listbox (莫烦python 笔记)
1 主体框架 主体框架部分还是 import tkinter as tkwindow = tk.Tk() #创建窗口window.title('my window') #窗口标题window.geo ...
- python笔记: 生成器
元素按照某种算法推算出来,我们在循环的过程中不断推算出后续的元素 不必创建完整的list,从而节省了大量的空间 这种一边循环一遍计算的机制,称之为生成器generator 1 列表生成器 把列表生成式 ...
- python输出字体的大小_Toby的Python笔记 | 预备知识:安装openpyxl学做电子表格
Toby的Python笔记 | 预备知识:安装openpyxl学做电子表格 Python 需要创建和读取excel表里面的数据,需要用 openpyxl 这个包,今天安装好备用. 首先,进入C命令窗口 ...
- c++ 冒泡排序_干货|python笔记1-冒泡排序
面试的时候经常有面试官喜欢问如何进行冒泡排序?这个问题相信可以难倒一批的同学,本篇就详细讲解如何用python进行冒泡排序. 基本原理 01概念: 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻 ...
- python笔记-1(import导入、time/datetime/random/os/sys模块)
python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内 ...
最新文章
- android与PC,C#与Java 利用protobuf 进行无障碍通讯【Socket】
- 你能用大数据创造一个新的商业模型吗?
- 将已有项目提交到github/从github上pull到本地
- 五、开始学习Excel函数,效率快速提高
- 【转】全排列算法非递归实现和递归实现
- oracle中directory的使用
- 【python】BytesIO与串化
- CentOS硬盘挂载之fdisk命令进行查看/分区/格式化/挂载
- 三.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---1.项目文件介绍(除主要源码部分)
- 全排列递归实现(二)
- Android异常总结---ActivityManager: Warning: Activity not started, its current task has been brought to
- 计算机三大科学理论是,近代科学最伟大的三大理论:进化论、量子论和计算论...
- 移除加密的pdf文件密码
- python 打印输出xml数据问题
- 制作OTA U盘升级包
- python常用模块②
- java swing 提示信息,java swing工具提示与不同的消息
- 基于AISAS模式的用户分析研究
- 毕业设计中使用支付宝沙箱完成在线支付流程
- 取消Chrome表单文本框自动填充黄色背景色样式
热门文章
- PHP(一) 开发环境搭建
- java反射 基本知识
- Spark 读 Elasticsearch
- Logical Volume Manager(逻辑卷管理)
- SimpleDraw-Windows Phone7上的应用
- Tensorflow遇到的问题InvalidArgumentError: Graph execution error:2 root error(s) found.解决方法
- 算法提高课-图论-差分约束- AcWing 1169. 糖果:spfa求单源最短路、差分约束
- PAT甲级1043 Is It a Binary Search Tree :[C++题解]判断二叉搜索树BST、给定前序序列和中序序列
- PAT甲级1100 Mars Numbers:[C++题解]进制位、使用stringstream类读入
- 汤家凤高等数学基础手写笔记-极限与连续