Python 进阶_OOP 面向对象编程_静态方法和类方法
目录
静态方法
静态方法仅是类中的函数, 不需要绑定实例, 也就是说静态方法的定义不需要传入 self 参数. 静态方法不属于类的某一个实例对象, 而是属于类本身, 所以不需要绑定到实例对象. 可以通过 className.staticMethodName 的方式来调用.
特点: 只能使用静态变量, 所以始终占用同一个内存, 执行效率更高, 但不会被自动回收.
应用场景: 用于处理一些不会经常改变, 但却会被频繁调用的数据. EG: Connect String/Config info
Note: 静态成员不能访问非静态成员, 因为非静态成员只有在被调用时才会被加载进内存, 而静态成员是长驻内存且不会被自动回收的, 所以非静态成员却可以访问静态成员.
类方法
类方法和实例方法类似, 区别在于前者需要定义 类对象参数 cls 而后者需要定义 实例对象参数 self. 两者在绑定方法调用中, 都会自动的传递相应的对象到第一次参数 (cls/self) 中.
使用函数修饰符来声明静态方法和类方法
In [1]: class TestStaticMethod(object):
...: @staticmethod
...: def foo():
...: print "Calling static method foo()"
...:
In [2]: class TestClassMethod(object):
...: @classmethod
...: def foo(cls):
...: print "Calling class method foo()"
...: print "foo() is part of class:", cls.__name__
...:
In [3]: tsm = TestStaticMethod()
In [4]: tsm.foo()
Calling static method foo()
In [5]: tcm = TestClassMethod()
In [6]: tcm.foo()
Calling class method foo()
foo() is part of class: TestClassMethod
# 类方法中的 cls 参数表示类对象自身
Python 进阶_OOP 面向对象编程_静态方法和类方法的更多相关文章
- Python 进阶_OOP 面向对象编程_组合与继承
#目录 前言 组合 派生 通过继承来覆盖重载方法 最常用的重载场景实例方法的重载 从标准类中派生类方法的重载 前言 我们定义一个类是希望能够把类当成模块来使用,并把类嵌入到我们的应用代码中,与其他的数 ...
- Python 进阶_OOP 面向对象编程_实例属性和方法
目录 目录 构造器和解构器 构造器 __init__ 真构造器 __new__ 解构器 __del__ 实例方法 Python 中的 抽象方法 实例属性 查看实例属性 实例属性和类属性的区别 访问不可 ...
- Python 进阶_OOP 面向对象编程_类属性和方法
目录 目录 类属性 调用类属性 查看类属性 特殊的类属性 类方法 真构造器 __new__ 类属性 在理解类属性之前要先搞清楚 实例属性 和 函数属性 之间的区别: 1. 实例属性:指的是实例化类对象 ...
- Python 进阶_OOP 面向对象编程_类和继承
目录 目录 类 最简单的类 类方法 构造器 __init__ 创建一个类 实例化一个对象 调用实例的方法和属性 创建子类 使用 super 来调用父类的构造器 实例化子类对象 调用子类的属性和方法 类 ...
- Python 进阶_OOP 面向对象编程_self 的实例绑定
目录 目录 self 和绑定 调用非绑定的方法 self 和绑定 在 Python 中 self 变量是特殊的, 其用于在实例方法中引用该方法所绑定的实例, 换句话说就是 Python 在实例化对象时 ...
- Python进阶之面向对象编程
面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机 ...
- Python进阶之面向对象编程(二)
Python面向对象编程(二) .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB& ...
- Python进阶之面向对象编程概述
Python面向对象编程(一) .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB& ...
- Python进阶:函数式编程实例(附代码)
Python进阶:函数式编程实例(附代码) 上篇文章"几个小例子告诉你, 一行Python代码能干哪些事 -- 知乎专栏"中用到了一些列表解析.生成器.map.filter.lam ...
随机推荐
- JavaScript如何获得两点之间顺时针旋转的角度
接上回:如何用javascript中的canvas让图片自己旋转 既然能够制定角度让图片旋转,那么现在要做的是自动获得旋转的角度, 让图片能够随着鼠标的方向旋转,让人物能够面朝鼠标的方向: 源代码: ...
- Python入门习题9.数码管时间
#七段数码管.py import turtle,datetime def drawGap(): #绘制数码管间隔 turtle.penup() turtle.fd(5) def drawLine(dr ...
- daily plan -- 2019/5/20
1.课内作业:物联网工程导论论文. 2.实验项目计划:学习Kinect彩色帧读取. 3.算法:LeetCode 动态规划一题. 4.英语:听力30分钟训练,英语单词. 今日心情: 进度反馈:计划基本完 ...
- Codeforces 1110C (思维+数论)
题面 传送门 分析 这种数据范围比较大的题最好的方法是先暴力打表找规律 通过打表,可以发现规律如下: 定义\(x=2^{log_2a+1}\) (注意,cf官方题解这里写错了,官方题解中定义\(x=2 ...
- python学习第五天--函数进阶
局部变量与全局变量下面代码中,old_price,rite为全局变量,final_price为局部变量 globals() 声明全局变量,在函数内可修改函数外的变量 内嵌函数:函数当中嵌套函数 闭包: ...
- python常用模块----re模块
正则表达式就是匹配字符串内容的一种规则. 字符组: [0123456789] 表示0-9这个范围内的任意一个数字都可以与之匹配,简写为[0-9] [a-z] 表示匹配所有的小写字母 [A-Z] 表示匹 ...
- html-mailto
MailTo 属性 mailto 属性可以设置到a 标签和form 标签中 例如: <a href="mailto:****@qq.com">send mail< ...
- php开启xdebug扩展及xdebug通信原理
xdebug调试原理 IDE(如PHPStorm)已经集成了一个遵循BGDP的XDebug插件,当开启它的时候, 会在本地开一个XDebug调试服务,监听在调试器中所设置的端口上,默认是9000,这个 ...
- ORM外键关联
#coding=utf-8 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarativ ...
- linux设置python虚拟环境的环境变量
针对 linux系统中 python虚拟环境 设置环境变量 2种方法: 1.在建好的虚拟环境的 venv/bin/active 文件中,写入需要的环境变量,再进入虚拟环境: 如 配置文件路径 JERR ...