关于python的静态方法

关于“Python的静态方法”很多学习py的同学不太了解,今天幕客就来总结下。

python的静态方法仅在类中出现,和许多语言(C、JAVA)的静态方法一样。有了静态方法我们能方便的用类直接调用方法,可以不用先实例化的优点。即使子类,也可议改写父类中的静态方法。

下面幕客用两个例子。

一、说下调用类的静态方法,可以不用先实例化

python的静态方法仅仅是类的函数(注意:是类的函数,不是实例的),所以我们调用类的静态方法,可以不用先实例化,然后直接调用,如下:

In [30]: class Myclass(object):

...: @staticmethod

...: def static_method(x):

...: print "static method echo....",x

...:

In [31]: Myclass.static_method('imoocc')

static method echo.... imoocc

但方法不是静态方法,是不可以调用的,如下:

In [34]: class Myclass(object):

...: def normal_method(x):

...: print "normal method echo ...",x

...:

In [35]: sm = Myclass()

In [36]: Myclass.normal_method('imoocc')

---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

in ()

----> 1 Myclass.normal_method('2')

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

二、父类中的静态方法可议通过子类重新定制

In [5]: class childclass(Myclass):

...: @staticmethod

...: def normal_method(x):

...: print "child method echo ...",x

...:

In [6]: childclass.normal_method('imoocc')

child method echo ... imoocc

关注幕客技术,将提供更多的python技术知识~

鼓励一句:

Money is not the problem, the problem is money!

本文来自企鹅号 - IMOOCC技术分享媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android知识点总结

03--图解数据结构之双链表实现容器

815
来自专栏Albert陈凯

Scala Essentials: 字面值

https://segmentfault.com/a/1190000004854613 类型系统 ? 引用类型 AnyRef 的子类 使用new 构造对象...

2344
来自专栏dotnet core相关

WCF 入门(20)

今天第20集了。这个视频系列里面有6集和异常相关,这集是最后一集。前面几集讲了服务端遇到普通的 .net exception时候,要转换城Soap Fault,...

543
来自专栏撸码那些事

C#集合类型大揭秘

1384
来自专栏大内老A

.NET Core的日志[4]:将日志写入EventLog

面向Windows的编程人员应该不会对Event Log感到陌生,以至于很多人提到日志,首先想到的就是EventLog。EventLog不仅仅记录了Window...

2066
来自专栏Coding迪斯尼

java开发编译器:把C语言的循环指令编译成java字节码

1183
来自专栏Java帮帮-微信公众号-技术文章全总结

Java基础-07(02).总结private,this,封装,static,成员方法变量,局部变量匿名对象

9:面向对象的练习题(掌握) (1)标准的手机类的定义和测试 (2)Demo类有求和方法,Test类进行测试。 什么时候定义成员变量? 当该变量是用来描...

2953
来自专栏逸鹏说道

Python3 与 C# 扩展之~基础衍生

在线编程: https://mybinder.org/v2/gh/lotapp/BaseCode/master

913
来自专栏Angular&服务

Angular2 组件(页面)之间如何传值

在Angular 2中,数据和事件变化检测从上到下发生从<b>父级到子级。</b>

2305
来自专栏微信公众号:Java团长

Java经典设计模式之五大创建型模式(附实例和详解)

(1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

871

扫码关注云+社区