1、如果你需要用实例来调用你的方法,那么在定义方法的时候,一定要把第一个参数设置成为self;

?2、如果你需要使用静态方法,那么你需要在方法前面加上@staticmethod修饰符;

?3、如果要使用类方法,那么你需要在方法前面加上@classmethod修饰符,并且在方法中至少使用一个参数,第一个参数在方法

中的作用就是代表改类本身。

????

#coding=gbk?

class C(object):

@staticmethod

def f1(arg): #here

is a static method. it's not necessary

只一个参数

#to have a

arg.

print 'arg:', arg

@classmethod

def f2(cls, arg):

#here is a class method. you have to take

第一个参数为类

#at least one arg. you can

use another name

#to replace the 'cls', but I

recommend you

#to use cls -- for most

python programmer

#use it.

print 'class name:', cls.__name__

print 'arg:', arg

def f3(self, arg):

#here is a instance method. Use 'self' in 第一个参数代表实例变量

#python is

just as 'this' in C++ or java.

print 'arg:', arg

def f4(arg): #no

error at here, but when you want to call this

这是错误的定义,缺少self

#method,

there will be an error. see it later.

print 'error:', arg

def test(): #

这是函数,不是方法(方法存在于类里)

c = C()

c.f1('cf1')

#OK

C.f1('Cf1')

#OK

c.f2('cf2')

#OK

C.f2('Cf2')

#OK

c.f3('cf3-1')

#OK

C.f3(c, 'cf3-2')

#OK

c.f4('cf4')

#Error

C.f4('Cf4')

#Error

if __name__ == '__main__':

test()

说明:

1、self

指的是你定义的这个类被调用创建了一个实例时,self就是这个实例。也就是说,self就是要使用你这个函数的实例的名称,这个self在类中必须要加,当然名字不一定是self,self只是传统变量名一直被沿用了而已。

2、类中的实例方法定义第一个参数必须是self,而普通函数(不在类中)的定义没有self参数。

转自:http://cache.baiducontent.com/c?m=9d78d513d9810ae902b0c8690c66c0101d43f6612bd6a0020fd3843995735a315017e1ac50200443939b733d47e90b4beb832b6f675d7de28cc8ff49d9ba852858d97a6b6d57d51d47c41edb931d769d7ecb47b9f144b2a7b174c0e88982c25757c9580e7882f28f5a0217cb64f01530e2a5984f155e10a7&p=8763cb15d9c043aa18bcc7710f089f&newp=9333831a84d012a05abd9b7d0f13cd231610db2151d4d31f&user=baidu&fm=sc&query=python?е???&qid=ef3722a200081e82&p1=23

?

python中类方法与实例方法的区别-python中类方法、类实例方法、静态方法的使用与区别...相关推荐

  1. 组件php53 php55区别,分享下php5类中三种数据类型的区别

    public: 公有类型 在子类中可以通过self::var 来调用 public类型的方法或属性 可以通过parent::method 来调用父类中的方法 在实例中可以能过$obj->var ...

  2. python静态方法和类方法的区别_python中类的静态方法和类的类方法

    知识回顾: 上一节中,我们深化学习了类的属性监控,主要使用了三个魔法方法:__getattr__ __setattr__ __delattr__ 与此同时在书写属性设置监控的时候,千万不要忘记写__d ...

  3. python私有变量什么意思_python为什么有私有方法和变量

    1. 访问安全,其实也没有决定的安全 >>> class humer(object): ... def __init__(self, name): ... self.name = n ...

  4. python中类方法与实例方法的区别-python中类方法,实例方法,静态方法的作用和区别...

    Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文. 首先,这三种方法都定义在类中.下面我先简单说一下怎么定义 ...

  5. python中类方法与实例方法的区别-Python实例方法、类方法、静态方法的区别与作用详解...

    本文实例讲述了Python实例方法.类方法.静态方法的区别与作用.分享给大家供大家参考,具体如下: Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调 ...

  6. python的用途实例-python中类方法,实例方法,静态方法的作用和区别

    Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文. 首先,这三种方法都定义在类中.下面我先简单说一下怎么定义 ...

  7. python中类方法与实例方法的区别-Python实例方法、静态方法和类方法详解(包含区别和用法)...

    和类属性一样,类方法也可以进行更细致的划分,具体可分为类方法.实例方法和静态方法. 和类属性的分类不同,对于初学者来说,区分这 3 种类方法是非常简单的,即采用 @classmethod 修饰的方法为 ...

  8. python函数和类的区别_Python中类中的方法还有区别?

    上一篇,我们讲到Python类中的属性是有区别的,爱思考的小伙伴们可能就会问了,Python中的方法是不是也有区别呢?是的,而且Python中的方法区别更大,让我们来看看吧~ Python类中的三种方 ...

  9. Python中类方法、类实例方法、静态方法,私有属性和私有方法有何区别?

    类方法 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,类对象和实例对象都可调用. 使用格式: 对类的属性进行操作,就要用类的方法. @class ...

  10. python 类变量、实例变量、参数、实例方法、类方法、静态方法 的用法和区别

    #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Introduce : 类变量.实例变量.参数.实例方法.类方法 ...

最新文章

  1. python写数据结构书_有哪些用 Python 语言讲算法和数据结构的书?
  2. Unbuntu18.04通过apt源方式安装mysql5.7.22
  3. 贪心算法--会场安排问题
  4. sql用什么替代or
  5. SpringBoot高级-消息-JMSAMQP简介
  6. Presto日志中出现大量的Triggering GC to avoid Code Cache eviction bugs
  7. java中的可检查和不检查_检查Java测试中发生了什么
  8. hmailserver批量添加用户
  9. php跳过一段html,PHP_一段能瞬间秒杀所有版本IE的简单HTML代码,许多人都非常讨厌Internet Explore - phpStudy...
  10. Spring : Factories这个是什么
  11. java服务器端socket,java 服务器端socket
  12. linux如何跳到命令行开端,Linux快捷键大全
  13. mockserver
  14. mac安装旺旺启动台找不到_如何正确安装卸载mac软件
  15. java闰年_java 判断闰年
  16. 设置jupyter notebook默认浏览器
  17. ecshop模板基础知识
  18. Spring Boot 结合 FreeMarker导出word文件
  19. java sdk和java api 的区别
  20. react:创建新项目

热门文章

  1. new hashmap 初始大小_害怕面试被问HashMap?这一篇就搞定了
  2. 建模大师怎么安装到revit中_「Revit技巧」插件挤满了、冲突了,怎么办?
  3. Spark中Task,Partition,RDD、节点数、Executor数、core数目(线程池)、mem数
  4. 检测用户命令序列异常——使用LSTM分类算法【使用朴素贝叶斯,类似垃圾邮件分类的做法也可以,将命令序列看成是垃圾邮件】...
  5. go语言笔记——切片底层本质是共享数组内存!!!绝对不要用指针指向 slice切片本身已经是一个引用类型就是指针...
  6. Kubernetes——基于容器技术的分布式架构领先方案,它的目标是管理跨多个主机的容器,提供基本的部署,维护以及运用伸缩...
  7. wukong引擎源码分析之索引——part 3 文档评分 无非就是将docid对应的fields信息存储起来,为搜索结果rank评分用...
  8. 联机事务处理OLTP(on-line transaction processing)和联机分析处理OLAP(On-Line Analytical Processing)...
  9. 巧用watch命令执行循环操作,来解放我们的双手
  10. pom.xml常用元素解析