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

本文共 1222 字,大约阅读时间需要 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

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

你可能感兴趣的文章
人脸和性别识别(基于OpenCV)
查看>>
Nginx Java 日志切割脚本
查看>>
浅谈代码审计入门实战:某博客系统最新版审计之旅
查看>>
nyoj 119士兵杀敌(三)(线段树区间最值查询,RMQ算法)
查看>>
truncate/drop表非常慢,怎么办?用硬链接,极速体验
查看>>
spring boot测试
查看>>
Timer使用
查看>>
H5+混合移动app应用开发——坑我太甚
查看>>
nc/netcat命令
查看>>
web3.js编译Solidity,发布,调用全部流程(手把手教程)
查看>>
Java国际化号码验证方法,国内手机号正则表达式
查看>>
HDU 1158 Employment Planning
查看>>
表格内嵌编辑控件
查看>>
DNS解析原理和流程
查看>>
Windows程序设计_15_求书
查看>>
Firefox 6 正式发布
查看>>
ESET Smart Security – 免费90天(sv)
查看>>
微软职位内部推荐-Senior SDE
查看>>
js Object.prototype.toString.call()
查看>>
android:padding和android:margin的区别[转]
查看>>