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 ...
随机推荐
- JavaScript:如何获取某一天所在的星期
我们会遇到的需求的是,获取今天或者某一天所在星期的开始和结束日期. 我们这里来获取今天所在星期的始末日期,我们可以通过(new Date).getDay()来获取今天是星期几,然后再通过这个减去或者加 ...
- django中CBV
08.13自我总结 django中CBV 一.django处理业务逻辑的两种方式 FBV (function based views):使用函数来处理业务逻辑 CBV (class based vie ...
- Display 1 No cameras rendering
解决: 点击Main Camera ,
- Halcon C# 联合编程问题(三)
因为之前遇到的那个halcon处理的图片要转换成ImageSource的问题,迟迟没有找到好的解决方案, 于是决定直接在wpf中使用halcon提供的HWindowControlWPF,用于显示图片. ...
- 百万年薪python之路 -- 函数初始
1.函数 1.1 认识函数 定义一个事情或者是功能,等到需要的时候直接去用就好了.那么这里定义东西就是一个函数 函数:对代码块和功能的封装和定义 函数的好处: 减少代码的重复性 代码可读性高 将功能进 ...
- 微信小程序和微信小程序之间的跳转和传参示例代码附讲解
一:微信小程序跳转 使用限制 需要用户触发跳转 从 2.3.0 版本开始,若用户未点击小程序页面任意位置,则开发者将无法调用此接口自动跳转至其他小程序. 需要用户确认跳转 从 2.3.0 版本开始,在 ...
- Eureka和zookeeper的比较
什么是CAP? CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不 ...
- day10整理(面对对象,过程,类和对象)
目录 一 回顾 (一)定义函数 (二)定义函数的三种形式 1.空函数 2.有参函数 3.无参函数 (三)函数的返回值 (四)函数的参数 1.形参 2.实参 二 面向过程编程 三 面向对象过程 四 类和 ...
- Redis(十四)Redis 在Java Web 中的应用
在传统的 Java Web 项目中,使用数据库进行存储数据,但是有一些致命的弊端,这些弊端主要来自于性能方面. 由于数据库持久化数据主要是面向磁盘,而磁盘的读/写比较慢,在一般管理系统中,由于不存在高 ...
- Awake,start,update,OnEnable,OnDisable
如题,unity继承自MonoBehaviour的以上方法的先后顺序为Awake-OnEnable-start-update-OnDisable.不同游戏物体之间以及子游戏物体之间方法是怎么调用的呢. ...