博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python静态方法和类方法
阅读量:5053 次
发布时间:2019-06-12

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

静态方法是类和类的独立实例。它是在类范围中定义的方法。

它可以直接由类和实例被称为。

类方法和静态方法都要使用装饰器来定义,定义的基本格式是:

@staticmethod

def <function name>():

         #do something

类方法定义的基本格式是:

@ classmethod

def <function name>(cls):

         #do something

类方法与成员方法不同的是,它须要传入參数cls,cls代表类。

class Myclass():	x='class';	def __init__(self):		self.x='instance';	@ staticmethod	def staticmd():		print 'static method';	@classmethod	def classmd(cls):		print cls.x;			def inst(self):		print self.x;

类的实例能够訪问静态方法。类方法,和成员方法

>>>test=Myclass()

>>>test.staticmd()

static method

>>>test.classmd()

class

>>>test.inst()

instance

类能够訪问静态方法和类方法,但不能訪问成员方法

>>>Myclass.staticmd()

static method

>>>Myclass.classmd()

class 

>>>Myclass.inst()

TypeError: unbound method inst() must be called with Myclass instance as first argument(got nothing instead)

静态方法能够被继承,以下的derived1类继承Myclass类,derived1类也有了静态方法。derived1的实例能够直接调用staticmd()方法

class derived1(Myclass):

         def__init__(self):

                   Myclass.__init__(self);

 

>>>d=derived1()

>>>d.staticmd()

static method

类方法也能够被继承,派生类的类的实例訪问类方法。将会自己主动调用派生类版本号的类方法,实现多态。

以下的derived2类继承自Myclass,derived2类能够调用类方法classmd(cls),此时cls指的是derived2.

class derived2(Myclass):

         x="derived2";

         def__init__(self):

                   Myclass.__init__(self);

>>>d2=derived2()

>>>d2.classmd()

derived2

版权声明:本文博主原创文章。博客,未经同意不得转载。

转载于:https://www.cnblogs.com/gcczhongduan/p/4815425.html

你可能感兴趣的文章
Zookeeper系列(二)特征及应用场景
查看>>
【HTTP】Fiddler(三)- Fiddler命令行和HTTP断点调试
查看>>
Spring Boot使用Druid和监控配置
查看>>
poi 处理空单元格
查看>>
Android 内存泄漏优化总结
查看>>
luogu4849 寻找宝藏 (cdq分治+dp)
查看>>
Spring Cloud微服务笔记(五)Feign
查看>>
C语言键盘按键列表
查看>>
Codeforces Round #374 (Div. 2)
查看>>
oracle数据类型
查看>>
socket
查看>>
Vue中使用key的作用
查看>>
二叉索引树 树状数组
查看>>
日志框架--(一)基础篇
查看>>
Java设计模式之原型模式
查看>>
Spring学习(四)-----Spring Bean引用同xml和不同xml bean的例子
查看>>
哲理故事与管理之道(20)-用危机激励下属
查看>>
关于源程序到可运行程序的过程
查看>>
wepy的使用
查看>>
转载:mysql数据库密码忘记找回方法
查看>>