为了辨析它们的差别,写了如下代码: 
 class C:

     def self_method(self, a):
return a @classmethod
def class_method(cls, a):
return a @staticmethod
def static_method(a):
return a def method(a):
return a if __name__ == '__main__':
  c = C()
  print(c.self_method('self method'))
  print(c.class_method('class method'))
  print(c.static_method('static method'))
  # print(c.method('method')) 运行出错
  # print(C.self_method('self method')) 运行出错
  print(C.class_method('class method'))
  print(C.static_method('static method'))
  print(C.method('method'))

因此:

  1. 实例方法定义时第一个参数为类的一个实例(self),调用时必须通过实例调用。可以访问实例属性和方法。
  2. 类方法使用@classmethod装饰,第一个参数为类(cls),调用时可以通过类的实例或者类本身来调用。可以访问类属性和方法。
  3. 静态方法使用@staticmethod装饰,调用时可以使用类的实例或者类本身来调用。
  4. 普通方法其实是在类中定义了一个普通函数,调用时必须通过类本身来调用。

Python中的实例方法、类方法、静态方法和普通方法的更多相关文章

  1. python中的实例方法、静态方法、类方法、类变量和实例变量

    class MyTest: myname = 'peter' # add a instance attribute    def __init__(self, name):        self.n ...

  2. Python Class 的实例方法/类方法/静态方法

    实例方法.类方法.静态方法 class MyClass(object): class_name = "MyClass" # 类属性, 三种方法都能调用 def __init__(s ...

  3. Python中执行系统命令常见的几种方法--转载

    Python中执行系统命令常见的几种方法 Python中执行系统命令常见的几种方法有: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执 ...

  4. Python中日期和时间格式化输出的方法

    本文转自:https://www.jb51.net/article/62518.htm 本文实例总结了python中日期和时间格式化输出的方法.分享给大家供大家参考.具体分析如下: python格式化 ...

  5. python中readline判断文件读取结束的方法

    注:内容来自网络 本文实例讲述了python中readline判断文件读取结束的方法.分享给大家供大家参考.具体分析如下: 大家知道,python中按行读取文件可以使用readline函数,下面现介绍 ...

  6. python中执行shell命令的几个方法小结(转载)

    转载:http://www.jb51.net/article/55327.htm python中执行shell命令的几个方法小结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014- ...

  7. Python中转换角度为弧度的radians()方法

    Python中转换角度为弧度的radians()方法 这篇文章主要介绍了Python中转换角度为弧度的radians()方法,是Python入门中的基础知识,需要的朋友可以参考下 radians()方 ...

  8. python中实例方法,类方法,静态方法简单理解

    按照字面名称来理解的话: 实例方法就是实例化对象的方法,绑定在实例对象上 类方法就是类自己的方法,不需要实例化对象,类自己就是对象,直接绑定在类上 静态方法就是普通的函数,函数作为对象,不过是封装在类 ...

  9. python中的实例方法、类方法、静态方法的区别

    Python 除了拥有实例方法外,还拥有静态方法和类方法,跟Java相比需要理解这个类方法的含义. class Foo(object): def test(self)://定义了实例方法 print( ...

  10. Python面向对象之类属性类方法静态方法

    类的结构 实例 使用面向对象开发时,第一步是设计类: 当使用 类名() 创建对象时,会自动执行以下操作: 1.为对象在内存中分配空间--创建对象: 2.为对象的属性 设置初始值--初始化方法(init ...

随机推荐

  1. 配置完php.ini中的扩展库后,重启apache出现错误1067

    网上有很多解决办法,比如更改环境变量,重装apache等等,但没有一个是符合我的.最后发现只是犯了一个低级错误,因为是第一次配置php.ini中的扩展库,忘记配置扩展库的路径. 解决办法:需要先加上扩 ...

  2. 二:python 对象类型概述

    1,为什么使用内置类型: a)内置对象使程序更容易编写 b)内置对象是扩展的组件 c)内置对象往往比定制的数据结构更加高效 d)内置对象是语言的标准的一部分 2,python  的主要内置对象 对象类 ...

  3. websocket搭建错误

    用一下版本: gevent == 1.2.2 Eel == 0.9.7 gevent-websocket == 0.10.1 greenlet == 0.4.13 PyInstaller == 3.3 ...

  4. HDU 1255 覆盖的面积(线段树面积并)

      描述 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. Input 输入数据的第一行是一个正整数T(1<=T<=100),代表测试数据的数量.每个测试数据的第一行是一个正 ...

  5. Python: 高阶函数与lambda表达式

    缘由: python语法简单一看就会,但用在实处,想因为少于实战,总感觉有些捉襟. 翻阅跟踪youtube_dl源码,看到filter()函数用法,及其中lambda表达式,感觉好有意思,就补下课,记 ...

  6. django具体操作(七)

    新增组件 使用 python manage.py startapp新建一个app,并且在settings中注册,添加stark.apps.StarkConfig, 然后在stark的apps中添加re ...

  7. jq里面关于disable的用法

    //两种方法设置disabled属性$('#areaSelect').attr("disabled",true);$('#areaSelect').attr("disab ...

  8. 让listView gridView全部扩展开

    public class NoScrollListView extends ListView {    public NoScrollListView(Context context, Attribu ...

  9. FragmentManager V4包下 应该用FragmentActivity

    import android.os.Bundle; import android.support.v4.app.FragmentActivity; public class MainActivity ...

  10. This system is not registered with an entitlement server. You can use subscription-manager to register.

    错误信息 [root@bogon apache-tomcat-]# yum install gcc-c++ Loaded plugins: product-id, search-disabled-re ...