python中实例方法,类方法,静态方法简单理解
按照字面名称来理解的话:
实例方法就是实例化对象的方法,绑定在实例对象上
类方法就是类自己的方法,不需要实例化对象,类自己就是对象,直接绑定在类上
静态方法就是普通的函数,函数作为对象,不过是封装在类的内部,通过类.方法引用
从参数上看:
实例方法默认参数是self
类方法默认参数是cls
静态方法可以没有
举个例子:
class Test():
    def a(self):
        print(self.a)
    @classmethod
    def b(cls):
        print(cls.b)
    @staticmethod
    def c():
        print(Test.c)
实例化一个对象
tmp = Test()
tmp.a()
tmp.b()
tmp.c() 输出:
<bound method Test.a of <__main__.Test object at 0x02145110>>
<bound method Test.b of <class '__main__.Test'>>
<function Test.c at 0x021424F8>
直接通过类去调用(以类本身为对象)
Test.a()
Test.b()
Test.c() 输出:
TypeError: a() missing 1 required positional argument: 'self'
<bound method Test.b of <class '__main__.Test'>>
<function Test.c at 0x021D24F8>
类自己实例化
print(Test())
print(Test)
Test().a()
Test().b()
Test().c() 输出
<__main__.Test object at 0x006E50B0>
<class '__main__.Test'>
<bound method Test.a of <__main__.Test object at 0x006E5790>>
<bound method Test.b of <class '__main__.Test'>>
<function Test.c at 0x006E24F8> 这里Test()与Test().a()在内存中对象不同,是因为一个是类对象,一个是实例方法对象
简单来说,@classmethod就是不用实例化,直接用类内部的方法;@staticmethod则是为封装类好看,为了满足强迫症,把方法装进类里面,实际大家都可以用
python中实例方法,类方法,静态方法简单理解的更多相关文章
- Python的实例方法,类方法,静态方法之间的区别及调用关系
		如果只看这个图,很多人可能会看的一头雾水,特别是学过完全面向对象语言的同学, Python 是双面向的,既可以面向函数编程,也可以面向对象编程,所谓面向函数就是单独一个. py 文件,里面没有类,全是 ... 
- 【开发者笔记】python中的类方法(@classmethod)和静态方法(@staticmethod)
		在java.c#等高级语言中我们用static来定义静态方法和静态变量,那么在python中如何定义静态方法和静态变量呢. python提供了@classmethod和@staticmethod来定义 ... 
- python中self cls init的理解
		原创文章,未经允许禁止转载! python中self cls init的理解 python中self cls init的理解 
- Python中关于csv的简单操作
		Python中关于csv的简单操作 CSV操作简单,直接import csv即可, 主要使用reader和pandas 1 reader的简单使用 csv.reader("1.csv&quo ... 
- Python中关于txt的简单读写模式与操作
		Python中关于txt的简单读写操作 常用的集中读写模式: 1.r 打开只读文件,该文件必须存在. 2.r+ 打开可读写的文件,该文件必须存在. 3.w 打开只写文件,若文件存在则文件长度清为0,即 ... 
- C#中事件流程的简单理解
		C#中事件流程的简单理解 C#中事件基于委托,要理解事件要先理解委托,但是现在我还没想好怎么写委托,如果不懂委托可以先找找委托的文章 事件基于委托,为委托提供了一种发布/订阅机制 一上来就是这句话,很 ... 
- Python中的类方法、实例方法、静态方法
		类方法 @classmethod 在python中使用较少,类方法传入的第一个参数是 cls,是类本身: 类方法可以通过类直接调用或者通过实例直接调用,但无论哪种调用方式,最左侧传入的参数一定是类本身 ... 
- python中,类方法和静态方法区别。
		面相对象程序设计中,类方法和静态方法是经常用到的两个术语. 逻辑上讲:类方法是只能由类名调用:静态方法可以由类名或对象名进行调用. 在C++中,静态方法与类方法逻辑上是等价的,只有一个概念,不会混淆. ... 
- Python Class 的实例方法/类方法/静态方法
		实例方法.类方法.静态方法 class MyClass(object): class_name = "MyClass" # 类属性, 三种方法都能调用 def __init__(s ... 
随机推荐
- SLAM中的卡方分布
			视觉slam中相邻帧特征点匹配时,动辄上千个特征点,匹配错误的是难免的,而误匹配势必会对位姿精度以及建图精度造成影响,那么如何分辨哪些是误匹配的点对儿呢?如果已知两帧的的单应矩阵,假设单应矩阵是没有误 ... 
- JVM参数的配置及意义
			JVM参数设置.分析 因为在工作中遇到了JVM参数的配置,不明白,网上搜索发现一篇好文,转载至:https://www.cnblogs.com/redcreen/archive/2011/05/04/ ... 
- nginx::基于Nginx+nginx-rtmp-module+ffmpeg搭建rtmp、hls流媒体服务器
			待续 ffmpeg -re -i "/home/bk/hello.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 4 ... 
- win10下安装openssl
			1.下载运行工具:ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi, 安装. 2.执行:perl example.pl,若显示“Hello from Acti ... 
- 使用css实现导航下方线条随导航移动效果
			HTML部分 <ul> <li><a href="">第一条</a></li> <li><a href ... 
- 【教程】基于Ubuntu系统的PyTorch虚拟环境配置
			目录 一.PyTorch虚拟环境配置 二.PyTorch虚拟环境使用 三.常用命令 Editor: Veagau Time: 2019/10/17 一.PyTorch虚拟环境配置 该部分操作均在终端( ... 
- Qualcomm-Atheros-QCA9377-Wifi-Linux驱动
			资源来自:https://download.csdn.net/download/ichdy/10331646 已经下载好了,发现无法使用,本人系统Centos7.2,如果有安装成功,并且可以正常使用的 ... 
- org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
			配置spring+shiro时,启动tomcat报错异常 严重: Context initialization failedorg.springframework.beans.factory.Bean ... 
- winform事件
			C#winform最简单的方法就是拖控件,然后双击控件生成默认的事件.再此双击生成的只是事件的方法,事件的订阅在form.desigener.cs中,如 this.DBSelectBTN.Click ... 
- Awake,start,update,OnEnable,OnDisable
			如题,unity继承自MonoBehaviour的以上方法的先后顺序为Awake-OnEnable-start-update-OnDisable.不同游戏物体之间以及子游戏物体之间方法是怎么调用的呢. ... 
