1.静态方法就是一个普通的方法,与类和对象无关

2.类方法就是JAVA里面的类方法,属于类,被各个对象共享

class OptSample(object):

count = 0

def __init__(self,origin_data):

self.origin_data = origin_data

@staticmethod

def add_number(num1,num2):

print(num1 + num2)

@classmethod

def total(cls):

print(cls.count)

sample1 = OptSample(1)

sample2 = OptSample(2)

sample1.add_number(2,3)

sample1.total()运行结果是5和0

静态方法其实和普通方法没什么差别,它的参数列表里面不会出现cls,或者self,在一定程度上解释了为什么它是类和对象无关的

class OptSample(object):

count = 0

def __init__(self,origin_data):

self.origin_data = origin_data

self.count += origin_data

@classmethod

def total(cls):

print(cls.count)

sample1 = OptSample(1)

sample1.total()

结果是0,很明显

self.count += origin_data

是在操作一个对象的属性而非一个类的属性,

通常在类的方法较容易操作类属性

class OptSample(object):

count = 0

def __init__(self,origin_data):

self.origin_data = origin_data

@classmethod

def total(cls):

cls.count += 1

print(cls.count)

sample1 = OptSample(1)

sample1.total()

OptSample.total()结果是1和2,类方法通过cls来操作cls

那么就单个对象而言如何在实例方法中去修改类变量?通过self.__class__

class OptSample(object):

count = 0

def __init__(self,origin_data):

self.origin_data = origin_data

self.__class__.count += origin_data

@classmethod

def total(cls):

print(cls.count)

sample1 = OptSample(122)

sample1.total()

OptSample.total()结果是122和122

python中类方法和静态方法的区别_python中静态方法和类方法的区别相关推荐

  1. python中str和int区别_python中eval与int的区别浅析

    python中eval和int的区别是什么?下面给大家介绍一下: 1.eval()函数 eval(<字符串>)能够以Python表达式的方式解析并执行字符串,并将返回结果输出.eval() ...

  2. python中int和eval的区别_python中eval与int的区别浅析

    python中eval和int的区别是什么?下面给大家介绍一下: 1.eval()函数 eval()能够以Python表达式的方式解析并执行字符串,并将返回结果输出.eval()函数将去掉字符串的两个 ...

  3. python中的return和print的区别_python中return和print的区别(详细)

    Huskiesir python最近正在研究.今天,我面临一个问题,那就是,返回和印刷的区别.双方都能输出结果.的区别是什么?闲话少说,看下面的例子.# Code1: def break_words( ...

  4. python find函数 和index的区别_python中index()与find()的区别

    起因:在排查错误时定位在判断语句这一行:if testlist.index('T'): 报错:ValueError: substring not found.原来是index()和find()没区分清 ...

  5. python中浅拷贝和深拷贝的区别_Python中浅拷贝和深拷贝的区别

    Python中浅拷贝和深拷贝的区别 浅拷贝和深拷贝示意图 如上图,简单点说 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deepcopy 深拷贝 拷贝 ...

  6. python 实例方法和类方法的区别_python中实例方法,类方法和静态方法的区别。...

    实例方法,必须要创建实例才能调用,里面有self关键字,有初始化函数必须对初始化函数进行传参. 类方法,可以直接类名.方法名直接调用,也可以创建实例调用.里面有cls关键字,调用时,直接类名.方法名, ...

  7. python中int和input的区别_python中input()与raw_input()的区别分析

    使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的 纯数字输入 当输入为纯数字时 input返回的是数值类型,如int,float ra ...

  8. python多线程和多进程的区别_python中多线程与多进程的区别

    线程的概念: 线程是操作系统中进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程可以有多个线程,每条线程可以同时执行不同的任务.一个 ...

  9. python中range和xrange的区别_python中range和xrange的区别

    range()是Python的内置函数,用于创建整数的列表,可以生成递增或者递减的数列.xrange也有相同的功能, 今天来看下它们之间的不同. range 函数说明:range([start,] s ...

最新文章

  1. debian下安装LNMP(三)
  2. 把价钱转化为xx.xx的形式
  3. Oracle Certified Master For Java EE 5/6 Comes
  4. Aspectj快速上手代码示例之Before,After,Around
  5. sar命令和vmstat命令详解
  6. 3376: [Usaco2004 Open]Cube Stacking 方块游戏(带权并查集)
  7. vue2.0+vue-video-player实现hls播放的案例
  8. CodeProject终于迁到Asp.Net了
  9. skyworth机顶盒刷linux系统,斐讯N1盒子刷机安装ubuntu斐讯n1刷linux系统详细教程
  10. 随机漫步与有效市场假说
  11. Perfmon监控Windows进程性能
  12. 一张图架构示意图及简单分析
  13. <博弈论> HDU1846
  14. SWFAddress实现Flex深度链接(不同模块具有不同的URL)
  15. 计算机专业的论文的格式,计算机专业毕业论文格式范例
  16. 三、Hive数据仓库应用之Hive数据操作语言(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)
  17. 【JavaWeb】之MVC三层架构
  18. vue v-for和v-if同时使用
  19. python中slice是什么类型_在python中,slice是一个副本还是一个poin
  20. 减少过拟合的方法总结

热门文章

  1. Android 源代码在线查看
  2. 公安部门计算机网络属于什么范畴,网络安全合规指引题库:公安机关检查发现信息系统安全保护状况不符合信息安全等级保护有关管理规范和技术标准的,应当向运营、使用单位发出整改通知。()...
  3. Vue+Echarts制作单页面的XMR矿池监控台
  4. python操作office_Python_13-Office文件数据操作
  5. Word里快删掉中文和英文之间的空格以及中文和数字之间的空格
  6. Flash与Flex路在何方?
  7. 药品食品管理功能性食品体系 国稻种芯:药食同源大健康产业
  8. 数据库系统的概念及其四大特点
  9. SpringMVC的HelloWord
  10. 计算机病毒论文百度百科,计算机病毒解析与防范论文.doc