话不多说,直接上程序:

a = 111
class A(object):
  a = 1   def f_instance(self):
    print self.a   @staticmethod
  def f_static():
    print a   @classmethod
  def f_class(cls):
    print cls.a aaa = A()
A.f_class()            #
A().f_class()            #
aaa.f_class()          #
A.f_static()         #
A().f_static()       #
aaa.f_static()       #
A.f_instance()     # TypeError
A().f_instance()  #
aaa.f_instance()  #
f_static()              #NameError aaa.a = 2
A.f_class()            #
A().f_class()          #
aaa.f_class()         #
A.f_static()         #
A().f_static()       #
aaa.f_static()       #
A.f_instance()     # TypeError
A().f_instance()  #
aaa.f_instance()  #
f_static()              #NameError A().a = 2; aaa.a=1   #基于上一步的赋值
A.f_class()             #
A().f_class()          #
aaa.f_class()          #
A.f_static()         #
A().f_static()       #
aaa.f_static()       #
A.f_instance()     # TypeError
A().f_instance()  #
aaa.f_instance()  #
f_static()              #NameError A.a = 10                 #基于上一步的赋值
A.f_class()             #
A().f_class()          #
aaa.f_class()          #
A.f_static()           #
A().f_static()        #
aaa.f_static()         #
A.f_instance()      # TypeError
A().f_instance()   #
aaa.f_instance()    #
f_static()              #NameError
总结如下:
       静态方法 : 和在类外面 定义的方法 效果一样,只不过该方法是类专有的,在外部不可直接访问。类和实例都可以调用。
       类方法 : 相当于所有的 该类的 实例的 “党章”,它的改变 能够影响 之后新的实例中的 实例属性,但是对旧的实例(在类属性改变之前所定义的实例)没有影响。实例也可以调用该方法,和类调用的效果相同,返回的是类属性。
             实例方法:只能在实例化之后被调用,只能影响实例属性,不能影响类属性,并且实例属性在被实例化之后不受类方法的影响,实例化之后也不因类属性改变而改变。类不可以调用,会返回TypeError。

透过代码理解python的静态方法、类方法与实例方法的更多相关文章

  1. python中的类方法,实例方法和静态方法的区别

    类方法是类的方法,在定义的时候要在上方加上一个@classmethod装饰器来进行装饰,形参是cls,类和实例都可以取调用类方法: 实例方法是实例对象方法,只有实例可以调用,类是不能调用的,形参是se ...

  2. IOS—静态方法(类方法)和实例方法

    1.实例方法/动态方法 a).标识符:- b).调用方式:(实例对象    函数) c).实例方法在堆栈上. 2.静态方法/类方法 a).标识符:+ b).调用方式:(类    函数) c).静态方法 ...

  3. IOS基础——静态方法(类方法)和实例方法

    1.实例方法/动态方法 a).标识符:- b).调用方式:(实例对象    函数) c).实例方法在堆栈上. 2.静态方法/类方法 a).标识符:+ b).调用方式:(类    函数) c).静态方法 ...

  4. Python中的类方法、实例方法、静态方法

    类方法 @classmethod 在python中使用较少,类方法传入的第一个参数是 cls,是类本身: 类方法可以通过类直接调用或者通过实例直接调用,但无论哪种调用方式,最左侧传入的参数一定是类本身 ...

  5. 关于python的类方法、实例方法和静态方法区别

    python的类方法需要在方法前面加装饰器:@classmethod ,静态方法是在方法前面加装饰器:@staticmethod. 类方法.类属性是属于类自身,属于类自身的命名空间,和实例方法.实例属 ...

  6. Python面向对象静态方法,类方法,属性方法

    Python面向对象静态方法,类方法,属性方法 属性: 公有属性 (属于类,每个类一份) 普通属性 (属于对象,每个对象一份) 私有属性 (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法: ...

  7. python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法

    1. 类对象和实例对象 Python中一切皆对象,Python类本身也是一种对象,类定义完成后,会在当前作用域中定义一个以类名为名字的命名空间.类对象具有以下两种操作: 可以通过“类名()”的方式实例 ...

  8. python静态方法类方法属性方法

    Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的: 1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数: 2)从第1条,静态方法是无法访问 ...

  9. python实例、类方法、静态方法

    [python实例.类方法.静态方法] 参考:http://blog.163.com/yang_jianli/blog/static/161990006201122411586729/

随机推荐

  1. 关于WPF程序启动性能

    项目里WPF的启动时间太久(>1分钟),显然是不能接受的.超过10秒,连Loading的等待框都会让用户感到厌烦. 1. 症状 项目的结构是1个WPF主进程,启动3个WPF子进程.子进程在启动时 ...

  2. 二、Python 数据类型

    计算机是用来辅助人类工作的,能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型,在程序设计中映射了现实世界的分类,以便于抽象的分析 序列:不 ...

  3. bug report: Jump to the invalid address stated on the next line at 0x0: ???

    gdb或者vlagrind报告: ==14569== Jump to the invalid address stated on the next line ==14569== at 0x0: ??? ...

  4. keep the bar green to keep the code clean——Junit详解(一)

    测试用例 单元测试时每个开发人员必需掌握的,是保证开发过程中代码的准确性,无误性,保证代码质量.敏捷开发模式是先根据用户需求写测试用例,考虑基本所有用户所需要的情况,再写实现方法.单元测试有很多种,当 ...

  5. 移动互联网公司如何将BPM流程管理变身移动化?

    背景介绍 OPPO是广东欧珀移动通信有限公司的旗下品牌,成立于2004年,是一家全球性的智能终端和移动互联网公司,致力于为客户提供最先进和最精致的智能手机.高端影音设备和移动互联网产品与服务,业务覆盖 ...

  6. Maven 从svn下载后,pom.xml报错解决方案

    Multiple annotations found at this line: - Execution default-testResources of goal org.apache.maven. ...

  7. 关于C#的内存释放问题

    最近在做一个要循环读取xml文件的功能. 想法是读取一个文件,释放一个文件,这样就不会消耗太多内存. 结果运行起来内存不停涨,最后内存溢出.用gc,disponse,异步都没有用. 后来改成relea ...

  8. 入门struts2.0

    框架是什么? 1.应用程序的半成品. 2.可重用行公共的结构. 3.按一定规则组织的一组组件. model2 其实并不是一种全新的概念,很对人指出model2其实正好是经典的"模型(mode ...

  9. RBAC类使用

    1.实现首先我们先简单理解一下RBAC,顾名思义,RBAC是基于角色的权限设计.既然根据角色去分权限,那么我们就得有角色表,权限表,角色对应权限表,这是最基本的.角色是什么,就是你的身份,你的职位,也 ...

  10. python 类、对象、方法、属性

    在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) 结论:对象=属性+方法 在python中,把具有相同属性和方法的对象归为一个类(class) ...