Python中的实例方法、类方法、静态方法和普通方法

 为了辨析它们的差别,写了如下代码: 
 1 class C:
 2
 3     def self_method(self, a):
 4         return a
 5
 6     @classmethod
 7     def class_method(cls, a):
 8         return a
 9
10     @staticmethod
11     def static_method(a):
12         return a
13
14     def method(a):
15         return a
16
17 if __name__ == ‘__main__‘:
18   c = C()
19   print(c.self_method(‘self method‘))
20   print(c.class_method(‘class method‘))
21   print(c.static_method(‘static method‘))
22   # print(c.method(‘method‘)) 运行出错
23   # print(C.self_method(‘self method‘)) 运行出错
24   print(C.class_method(‘class method‘))
25   print(C.static_method(‘static method‘))
26   print(C.method(‘method‘))

因此:

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

原文地址:https://www.cnblogs.com/lyg-blog/p/8761299.html

时间: 2024-10-12 01:11:39

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

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

http://www.jb51.net/article/49402.htm 注:使用的是Python2.7. 一.实例方法 实例方法就是类的实例能够使用的方法.如下: 复制代码 代码如下: class Foo:    def __init__(self, name):        self.name = name    def hi(self):        print self.name if __name__ == '__main__':    foo01 = Foo('letian')

python中的实例方法、静态方法和类方法

对于python中类的这三种方法,之前一直都不清楚其中的差别,最近阅读了<编写高质量代码 改善python程序的91个建议>,颇受启发,现在写出来分享下. 先看下面的一段代码 1 # !/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 class A: 5 name = "A class" 6 7 def instance_method(self): 8 print "this is instance fun&quo

python进阶三(面向对象编程基础)【3-3 python中定义实例方法】

python中定义实例方法 一个实例的私有属性就是以__开头的属性,无法被外部访问,那这些属性定义有什么用? 虽然私有属性无法从外部访问,但是,从类的内部是可以访问的.除了可以定义实例的属性外,还可以定义实例的方法. 实例的方法就是在类中定义的函数,它的第一个参数永远是 self,指向调用该方法的实例本身,其他参数和一个普通函数是完全一样的: 1 class Person(object): 2 3 def __init__(self, name): 4 self.__name = name 5

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

Python中执行系统命令常见的几种方法 Python中执行系统命令常见的几种方法有: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执行,结果直接打印出来 例如: >>> import os >>> os.system('ls') chk_err_log.py CmdTool.log  install_log.txt  install_zabbix.sh  manage_deploy.sh  MegaSA

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

类的结构 实例 使用面向对象开发时,第一步是设计类: 当使用 类名() 创建对象时,会自动执行以下操作: 1.为对象在内存中分配空间--创建对象: 2.为对象的属性 设置初始值--初始化方法(init); 对象创建后,内存中就有了一个对象的实实在在的存在--实例: 因此通常也会把: 1.创建出来的对象叫做类的实例: 2.创建对象的动作叫实例化: 3.对象的属性叫实例属性: 4.对象调用的方法叫实例方法: 在程序执行时: 1.对象各自拥有自己的实例属性: 2.调用对象方法,可以通过self. 访问

python中常见的那些错误及解决方法(不定更新)

错误1:SyntaxError: 'return' outside function解决:将return放在方法体中return不能在方法以外使用 错误2:TypeError: must be str, not int类型错误 必须是一个字符串 不能是数字解决办法:使用+拼接的时候 必须使用字符串,或者将数字转化成字符串 错误3:SyntaxError: invalid syntax语法错误 非法的语法解决办法:看报错信息在第几行 ,从这一行往上找错误 错误4:IndentationError:

Python中给List添加元素的4种方法

https://blog.csdn.net/hanshanyeyu/article/details/78839266 List 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义的顺序(除非你对它们进行排序或其他修改操作). 在Python中,向List添加元素,方法有如下4种方法(append(),extend(),insert(), +加号) 1. append() 追加单个元素到List的尾部,只接受一个参数,参数可以是任何数据类型,被追加的元素在Lis

python中删除某个元素的3种方法

python中关于删除list中的某个元素,一般有三种方法:remove.pop.del 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除举例说明: >>> str=[1,2,3,4,5,2,6] >>> str.remove(2) >>> str [1, 3, 4, 5, 2, 6] 2.pop: 删除单个或多个元素,按位删除(根据索引删除) ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:××× 寻找有志同道合

Python的实例方法,类方法,静态方法之间的区别及调用关系

如果只看这个图,很多人可能会看的一头雾水,特别是学过完全面向对象语言的同学, Python 是双面向的,既可以面向函数编程,也可以面向对象编程,所谓面向函数就是单独一个. py 文件,里面没有类,全是一些函数,调用的时候导入模块,通过模块名.函数名()即可调用,完全不需要类,那么你可能会问,那要类还有什么毛用? 类就是用来面向对象编程啦,类可以有自己的属性,类可以创建很多实例,每个实例可以有不同的属性,这也就保存了很多私有的数据,总之都有存在的必要. 再来看上面这张图,在类里面定义的函数就是方法