博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 进阶_OOP 面向对象编程_静态方法和类方法
阅读量:6839 次
发布时间:2019-06-26

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

目录

静态方法

静态方法仅是类中的函数, 不需要绑定实例, 也就是说静态方法的定义不需要传入 self 参数. 静态方法不属于类的某一个实例对象, 而是属于类本身, 所以不需要绑定到实例对象. 可以通过 className.staticMethodName 的方式来调用.

特点: 只能使用静态变量, 所以始终占用同一个内存, 执行效率更高, 但不会被自动回收.
应用场景: 用于处理一些不会经常改变, 但却会被频繁调用的数据. EG: Connect String/Config info
Note: 静态成员不能访问非静态成员, 因为非静态成员只有在被调用时才会被加载进内存, 而静态成员是长驻内存且不会被自动回收的, 所以非静态成员却可以访问静态成员.

类方法

类方法和实例方法类似, 区别在于前者需要定义 类对象参数 cls 而后者需要定义 实例对象参数 self. 两者在绑定方法调用中, 都会自动的传递相应的对象到第一次参数 (cls/self) 中.

使用函数修饰符来声明静态方法和类方法

In [1]: class TestStaticMethod(object):   ...:     @staticmethod   ...:     def foo():   ...:         print "Calling static method foo()"   ...:         In [2]: class TestClassMethod(object):   ...:     @classmethod   ...:     def foo(cls):   ...:         print "Calling class method foo()"   ...:         print "foo() is part of class:", cls.__name__   ...:         In [3]: tsm = TestStaticMethod()In [4]: tsm.foo()Calling static method foo()In [5]: tcm = TestClassMethod()In [6]: tcm.foo()Calling class method foo()foo() is part of class: TestClassMethod# 类方法中的 cls 参数表示类对象自身

转载地址:http://wakul.baihongyu.com/

你可能感兴趣的文章
iptraf
查看>>
Tomcat JDBC pool源码部析
查看>>
a 伪类在IE6下优先级大于class
查看>>
iOS 导出 ipa 包时 四个选项的意义
查看>>
我的友情链接
查看>>
android 简单解决询问权限问题和apk打包过大问题
查看>>
Android Accessibility学习笔记
查看>>
QEMU用户模式学习笔记
查看>>
两种方法解决mysql主从不同步
查看>>
Lvs+Keepalived+MySQL Cluster架设高可用负载均衡Mysql集群
查看>>
Spring高级应用之注入嵌套Bean
查看>>
mini6410 uboot1.1.6 MMC fat command support
查看>>
系统日志的实践应用
查看>>
基于SmartGwt的分页组件
查看>>
【oraInventory】由OUI-10035和OUI-10033错误引发的关于oraInventory目录位置的思考
查看>>
epoll和select的区别
查看>>
地产浅吟
查看>>
Eclipse实现文件在资源管理器打开并选中
查看>>
我的友情链接
查看>>
网站访问用时统计
查看>>