今天简单总结下python的类方法,实例方法,静态方法。

python默认都是实例方法,也就是说,只能实例对象才能调用这个方法。

那是不是说类方法也只能被类对象本身来调用呢,当然,不是。类方法既可以被类对象调用,也可以被实例对象调用。你可以这样理解,假设我现在定义的是‘dog狗’,它有一个类方法‘啃骨头’,那么对于所有的狗是不是都可以调用啃骨头这个方法,既然这样,我现在创建一个‘旺财’实例,它也同样可以去啃骨头,也就是能调用这个类方法。

静态方法你可以理解为参数可以随意设置的方法,类对象和实例对象都可以调用它。

#!usr/bin/env python
# coding:utf-8 class A:
def funa(self):
print('实例方法') @classmethod
def funb(cls):
print('类方法') @staticmethod
def func():
print('静态方法') if __name__ == '__main__':
#生成一个实例对象
a = A()
a.funa() #input:实例方法 #报错:TypeError: funa() missing 1 required positional argument: 'self'
#A.funa() a.funb() #input:类方法
A.funb() #input:类方法
a.func() #input:静态方法
A.func() #input:静态方法

总结:类中方法在未加@之类装饰器时都是属于实例方法,只能被实例对象调用。

  @classmethod类方法,可以被类对象和实例对象调用。

  @staicmethod静态方法,可以被类对象和实例对象调用,参数可以随意设置。

最新文章

  1. 杭电ACM1000
  2. hpunix下11gRac的安装
  3. openCV_java 图像二值化
  4. vue中如何不通过路由直接获取url中的参数
  5. OpenCV学习笔记——视频的边缘检测
  6. 第四十三篇、利用NSProxy解决NSTimer内存泄漏问题
  7. 用VIM写作
  8. (诊断)为GitHub添加SSH key时出现“Could not open a connection to your authentication agent”错误的应对方案(转)
  9. 1-5html文件基本结构
  10. springmvc中的page
  11. 切面编程AOP之Castle.Core
  12. Liinux 学习心得
  13. flask再学习-思考之怎么从数据库中查询数据在页面展示!
  14. Pycharm中安装package出现microsoft visual c++ 14.0 is required问题解决办法
  15. EmBitz1.11中将左边的目录弄出来
  16. 区块链 blockchain
  17. [UE4]装饰器:Blackboard(装饰器的一种,不是黑板)
  18. LightOJ 1296 Again Stone Game(sg函数)题解
  19. js在类似数组的对象中使用push
  20. 【性能测试】服务器性能监控、数据采集工具nmon安装使用详解

热门文章

  1. BZOJ3073 PA2011Journeys(线段树+bfs)
  2. Luogu2662 牛场围栏(最短路)
  3. [学习笔记]LCT进阶操作
  4. NEYC 2017 自动取款机 atm Day6 T1
  5. POJ2253:Frogger(改造Dijkstra)
  6. B. Light It Up 思维题
  7. vue之axios使用
  8. SpringMVC——如何获取请求参数
  9. VR行业纷纷倒闭:有硬件没内容
  10. 【BZOJ2648】SJY摆棋子 [KD-tree]