python内置的@staticmethod详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python内置的@staticmethod详解相关的知识,希望对你有一定的参考价值。
python中的staticmethod 主要是方便将外部函数集成到类体中,美化代码结构,重点在不需要类实例化的情况下调用方法(类似java的静态方法)
如果你去掉staticmethod,在方法中加self也可以通过实例化访问方法也是可以集成代码
1)先看看不使用staticmethod的代码如何写的
#coding:utf-8 IND = ‘ON‘ def checkind(): return (IND == ‘ON‘) class Kls(object): def __init__(self,data): self.data = data def do_reset(self): if checkind(): print(‘Reset done for:‘, self.data) def set_db(self): if checkind(): self.db = ‘New db connection‘ print(‘DB connection made for:‘, self.data) ik1 = Kls(12) ik1.do_reset() ik1.set_db()
输出=>
(‘Reset done for:‘, 12)
(‘DB connection made for:‘, 12)
2)再看看使用staticmethod的代码,用staticmethod包装的方法可以内部调用,也可以通过类访问或类实例化访问
#coding:utf-8 IND = ‘ON‘ class Kls(object): def __init__(self,data): self.data = data @staticmethod def checkind(): return (IND == ‘ON‘) def do_reset(self): if self.checkind(): print(‘Reset done for:‘, self.data) def set_db(self): if self.checkind(): self.db = ‘New db connection‘ print(‘DB connection made for:‘, self.data) ik1 = Kls(12) ik1.do_reset() ik1.set_db() print(ik1.checkind()) print(Kls.checkind())
输出==>
(‘Reset done for:‘, 12)
(‘DB connection made for:‘, 12)
True
True
以上是关于python内置的@staticmethod详解的主要内容,如果未能解决你的问题,请参考以下文章
Python内置函数之classmetho staticmethod
python之内置装饰器(property/staticmethod/classmethod)
面向对象之classmethod和staticmethod(python内置装饰器)