博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python的3个方法:静态方法(staticmethod),类方法(classmethod)和实例方法
阅读量:5242 次
发布时间:2019-06-14

本文共 873 字,大约阅读时间需要 2 分钟。

Python的方法主要有3个,即静态方法(staticmethod),类方法(classmethod)和实例方法,如下:

def foo(x):    print "executing foo(%s)"%(x) class A(object):    def foo(self,x):        print "executing foo(%s,%s)"%(self,x)     @classmethod    def class_foo(cls,x):        print "executing class_foo(%s,%s)"%(cls,x)     @staticmethod    def static_foo(x):        print "executing static_foo(%s)"%x a=A()

这个self和cls是对类或者实例的绑定,对于一般的函数来说我们可以这么调用foo(x),这个函数就是最常用的,它的工作跟任何东西(类,实例)无关.对于实例方法,我们知道在类里每次定义方法的时候都需要绑定这个实例,就是foo(self, x),为什么要这么做呢?因为实例方法的调用离不开实例,我们需要把实例自己传给函数,调用的时候是这样的a.foo(x)(其实是foo(a, x)).类方法一样,只不过它传递的是类而不是实例,A.class_foo(x).注意这里的self和cls可以替换别的参数,但是python的约定是这俩,还是不要改的好.

对于静态方法其实和普通的方法一样,不需要对谁进行绑定,唯一的区别是调用的时候需要使用a.static_foo(x)或者A.static_foo(x)来调用.

\ 实例方法 类方法 静态方法
a = A() a.foo(x) a.class_foo(x) a.static_foo(x)
A 不可用 A.class_foo(x) A.static_foo(x)

转载于:https://www.cnblogs.com/genezhao/p/6920761.html

你可能感兴趣的文章
FTTB FTTC FTTH FTTO FSA
查看>>
OpenAI Gym
查看>>
stap-prep 需要安装那些内核符号
查看>>
网易杭研后台技术中心的博客 -MYSQL :OOM
查看>>
第二章 数据通信的基础知识 计算机网络笔记 学堂在线 2.1 数据传输系统 2.2 信号...
查看>>
如何解决click事件的重复触发问题
查看>>
2016寒假自学笔记
查看>>
VC++2012编程演练数据结构《21》二叉排序树
查看>>
Easyui NumberBox格式化展示
查看>>
转载:ASP.NET Core 在 JSON 文件中配置依赖注入
查看>>
(描述需要改进) Leetcode No.71 **
查看>>
socket初识
查看>>
绕啊绕的递归函数
查看>>
vue+sass 下sass不能运行问题
查看>>
struts 的应用
查看>>
磁盘测试工具
查看>>
eclipse查看jdk及maven依赖包源码
查看>>
[HDU]3371 Connect the Cities
查看>>
那些年我们刷过的手机
查看>>
python--数据类型--1
查看>>