早上起来写个小demo, 类中写了个方法, pycharm给这个方法加上了莫名其妙的波浪线, 对于一个有代码洁癖的人来说, 完全不能忍, 来看看为什么.

问题重现

pycharm的提示

上面说了, 这是一个类中的方法,

然后看到了pycharm的友情提示, 这才发现

这个提示的意思就是说, 这个add方法可能是一个static的. 然后我就明白了, 因为这个方法中没有用到对象的资源

@staticmethod的使用

上面得到的结论就是在方法中没有引用对象的资源, 所以pycharm建议我把这个方法改为静态方法, 也就是加上@staticmethod装饰器

那么@staticmethod起到了一个什么样的作用呢?

一般在写一个方法的时候, 默认会接受一个self的形参, 但是在调用这个方法的使用可能并没有传递任何一个参数,

这个self就是你使用对象调用方法的那个对象本身,

要是将这个方法改为一个静态的方法, 就不会有self

总结

当某个方法不需要用到对象中的任何资源,将这个方法改为一个静态方法, 加一个@staticmethod

加上之后, 这个方法就和普通的函数没有什么区别了, 只不过写在了一个类中, 可以使用这个类的对象调用,

也可以使用类直接调用, 简而言之, 写在类中的函数, 我是这么认为的..

最新文章

  1. Service实时向Activity传递数据案例
  2. [原创]WKWebview点击图片查看大图
  3. [综] PCA降维
  4. JS性能方面--内存管理及ECMAScript5 Object的新属性方法
  5. Linq专题之var关键字
  6. solaris bind 符号未定义
  7. 【postgresql】创建自增SEQUENCE
  8. uva 1103
  9. myeclipse2015不能启动tomcat,提示: Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at local
  10. 【python之旅】python的基础二
  11. js 创建html元素 渲染html元素
  12. [转] (CQRS)命令和查询责任分离架构模式(一) 之 什么是CQRS
  13. Python入门之函数的介绍/定义/定义类型/函数调用/Return
  14. 12.Django思维导图
  15. Javascript高级编程学习笔记(67)—— 事件(11)HTML5事件
  16. Pandas基础使用
  17. [转帖]整理:Windows系统下的奇技淫巧大汇总
  18. leetcode1027
  19. L1-053 电子汪
  20. 安装Python3.6.4后,在使用numpy时报错RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88

热门文章

  1. Flask入门request session cookie(二)
  2. mysql_01_游标的使用
  3. 增强for循环 java.util.ConcurrentModificationException
  4. FPGA----只读存储器(ROM)
  5. 1.GlusterFS 初识
  6. 纠结的一天 —— 由base64编解码与加号、空格引起
  7. Hibernate 基于外键映射的一对一关联关系随手记
  8. Codeforces 336C 0-1背包
  9. React中最基础的jsx语法
  10. Django学习之ORM操作