Python面向对象时最常见的3类方法
为了节省读友的时间,先上结论(对于过程和细节感兴趣的读友可以继续往下阅读,一探究竟):
【结论】
| 类中定义的方法类型 | 关键词 | 本质含义 | 如何定义 | 如何调用 | 使用场景举例 |
| 实例方法 | 一般无任何修饰时,默认为实例方法 | - |
def func(self, *args, **kwargs): |
只能被对象实例调用 | - |
| 类方法 | @classmethod | - |
@classmethod |
1)可以被类调用 2)可以被对象实例调用 |
1)通过调用静态方法进行校验 2)校验合法后return cls( *args, **kwargs )得到对象实例 |
| 静态方法 | @staticmethod | 某个类专用的工具函数 |
@staticmethod |
1)可以被类调用 2)可以被对象实例调用 |
在类初始化得到对象前被类方法调用以实现: 1)按规范提取参数 2)参数合法性校验 |
【Tips】
- 实例方法:第一个参数必须指向对象本身,按惯例常用self表示(当然,你也可以使用任意合法的标识符表示,只是不够pythonic故不建议)
- 类方法:第一个参数必须指向类本身,按惯例常用cls表示(类似实例方法的self一样,也只是惯例并没有强制)
- 静态方法:不能访问类或对象实例的属性(因为没有类似self/cls一样的参数指向类或者对象实例,故无法访问)
【参考】
https://zhuanlan.zhihu.com/p/420728875
Python面向对象时最常见的3类方法的更多相关文章
- 计算机基础 python安装时的常见致命错误 pycharm 思维导图
计算机基础 1.组成 人 功能 主板:骨架 设备扩展 cpu:大脑 计算 逻辑处理 硬盘: 永久储存 电源:心脏 内存: 临时储存,断电无 操作系统(windonws mac linux): 软件,应 ...
- Python - 面向对象编程 - 实例方法、静态方法、类方法
实例方法 在类中定义的方法默认都是实例方法,前面几篇文章已经大量使用到实例方法 实例方法栗子 class PoloBlog: def __init__(self, name, age): print( ...
- Python运行时的常见错误
1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加冒号(:)(导致 “SyntaxError :invalid syntax”) 2)使用 ...
- python面向对象-3类的静态方法和类方法
还是以上次的洗衣机例子: class Washer: company='ZBL' def __init__(self,water=10,scour=2): self._water=water #不想让 ...
- Python面向对象之静态方法、静态方法与类方法
静态属性: 类调用函数属性时,需要先将类实例化,再将实例作为函数属性传入:类的实例调用函数属性时需要在后面加括号. class Building: def __init__(self, name, o ...
- Python面向对象静态方法,类方法,属性方法
Python面向对象静态方法,类方法,属性方法 属性: 公有属性 (属于类,每个类一份) 普通属性 (属于对象,每个对象一份) 私有属性 (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法: ...
- Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法
一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在pytho ...
- Python面向对象05 /私有成员、类方法、静态方法、属性、isinstance/issubclass
Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubclass 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/is ...
- python 面向对象专题(五):私有成员、类方法、静态方法、属性、isinstance/issubclass
https://www.cnblogs.com/liubing8/p/11325421.html 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubc ...
随机推荐
- docker容器使用loki收集日志
docker-compose安装loki套件(loki+promtail+grafana) loki进行日志聚合处理 类似elk中的es promtail是日志收集,类似elk中的logstash ...
- MySQL数据库行转列
一.数据源如下所示 二.对应SQL语句如下所示 -- 行转列 SELECT t1.`产品名称`, SUM(CASE t1.`日期` WHEN '2019-11-11' THEN t1.`数量` ELS ...
- HGAME2021 week3 pwn writeup
一共放出五道题,都不是很难. blackgive 考栈转移,值得注意的一点是转移过去先填充几个ret,因为如果直接在转移过去的地方写rop链,执行起来会覆盖到上面的一些指针,导致程序不能正常输入和输出 ...
- 十年后回到百年前?(Excel技巧集团)
在单元格里输入日期,有时可以偷懒,比如明年的日期可以输入至少一位的年+横杠(或斜杠)+至少一位的月+横杠(或斜杠)+至少一位的日,也就是"21-1-1",单元格里就会自动显示&qu ...
- Java的对象与类,继承
Java的对象与类,继承 题目1.Java类的建立与使用 设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名.当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的 ...
- CF1497A Meximization 题解
Content 给定 \(n\) 个数 \(a_1,a_2,\dots,a_n\),你需要将这些数重新排列,使得 \(\sum\limits_{i=1}^n\operatorname{mex}(a_1 ...
- java 编程基础 注解 :可重复的注解
重复注解 Java8以前,同一个程序元素前最多只能使用一相同类型的注解;如果需要在同一个元素前使用多个相同类型的注解,则必须使用注解"容器".例如在Struts开发中,有时需要在 ...
- C++11 新特性:enable_shared_from_this
enable_shared_from_this是一个模板类,定义于头文件<memory>,其原型为:template< class T > class enable_share ...
- docker启动redis报错 oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docker启动redis报错 1:C 17 Jun 08:18:04.613 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo1:C 17 Jun 08 ...
- VS2013 or up version +常用插件
!!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!! 作者:mohist 下载地址: https://github.com/mohistH/vs2013_extens ...