class Kls(object):
def __init__(self, data):
self.data = data
def printd(self):
print(self.data)
@staticmethod
def smethod(*arg):
print('Static:', arg)
@classmethod
def cmethod(*arg):
print('Class:', arg) >>> ik = Kls(23)
>>> ik.printd()
23
>>> ik.smethod()
Static: ()
>>> ik.cmethod()
Class: (<class '__main__.Kls'>,)
>>> Kls.printd()
TypeError: unbound method printd() must be called with Kls instance as first argument (got nothing instead)
>>> Kls.smethod()
Static: ()
>>> Kls.cmethod()
Class: (<class '__main__.Kls'>,)
以上例子中printd是实例方法,smethod是静态方法,cmethod是类方法,那么他们有什么区别呢
实例方法会将实例自身作为第一个参数传给实例方法
lk.printd()会将lk传给printd方法
类方法
Kls.cmethod()会将Kls传给cmethod方法
当这个方法被调用的时候,我们把类作为第一个参数,而不是那个类的实例(就像我们通常用的方法一样)。这意味着您可以在该方法内使用该类及其属性,而不是特定的实例
静态方法不会传入类或者实例给类方法
当这个方法被调用的时候,我们不会把类的实例传递给它(就像我们通常用的方法一样)。这意味着你可以在一个类中放置一个函数,但是你不能访问那个类的实例(当你的方法不使用实例的时候这是很有用的)
通常的话使用实例方法即可,初始化类实例后,该实例可以调用类中的实例方法,
类方法是提供给类内部使用的,不需要初始化类实例。
静态方法在方法不使用实例是使用
例子链接:https://www.zhihu.com/question/20021164/answer/18224953
Python内置的@property装饰器就是负责把一个方法变成属性调用的

最新文章

  1. 从I/O复用谈epoll为什么高效
  2. 【代码笔记】iOS-获得当前的月的天数
  3. Node.js的学习--使用cheerio抓取网页数据
  4. PyQt4软件打包成exe文件
  5. 恢复drop数据
  6. EF Code First学习笔记 初识Code First
  7. Python 基础【第七篇】集合
  8. 第一节windows系统安装虚拟机VMware 软件
  9. js实现的文章输入检查与测速。
  10. H5拖拽 构造拖拽及缩放 pdf展示
  11. apache一个ip多个端口虚拟主机
  12. Struts1基础、使用Struts实现登录、使用Struts HTML标签简化开发
  13. node.js爬取ajax接口数据
  14. #WEB安全基础 : HTTP协议 | 0x10 扩展HTTP报文结构概念和内容编码
  15. qt 利用 HTML 生成PDF文档,不能显示jpg图片
  16. 解决Ubuntu 16.04 上Android Studio2.3上面运行APP时提示DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs的问题
  17. 安装mysqlclient的时候出现Microsoft Visual C++ 14.0 is required报错
  18. FasterRCNN代码解读
  19. gsoap入门:C/C++代码生成及编译--包含soapcpp2 -qname添加命名空间后报错的解决方法--可用
  20. acl使用示例

热门文章

  1. Guid is not updated for cluster with specified cluster id; need to wait for hosts in this cluster to come up
  2. EF6 Working with Proxies ProxyCreationEnabled
  3. ps aux 状态介绍
  4. 解决Windows10与Ubuntu系统时间不一致问题
  5. 转:攻击JavaWeb应用[8]-后门篇
  6. 循序渐进PYTHON3(十三) --2-- DJANGO之FORM表单(自动生成HTML标签和自定制提示信息)
  7. Flask实战第44天:完成前台注册功能
  8. Visual Studio警告IDE0006的解决办法
  9. BZOJ 1123 [POI2008]BLO(Tarjan算法)
  10. 【树形dp】hdu6035 Colorful Tree