美文网首页
【pyhton】staticmethod & class

【pyhton】staticmethod & class

作者: lndyzwdxhs | 来源:发表于2018-02-27 15:12 被阅读18次

0x01 staticmethod

经常有一些跟类有关系的功能,但是在运行时又不需要实例和类的参与,在这个时候就需要使用静态方法

比如更改环境变量或者修改其他类之外的东西,就需要使用静态方法,虽然这种情况可以直接使用类外的函数来解决,但是这个破坏了类的封装性,使代码难以维护。

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()

0x02 classmethod

只在类中运行,而不再实例中运行的方法,就是类方法。也可以在类外定义一个功能相同的函数来替代类方法,但是这个破坏了类的封装性。

不管是从实例调用还是从类调用类方法,它的第一个参数都是

class Kls(object):
    no_inst = 0
    def __init__(self):
        Kls.no_inst = Kls.no_inst + 1
    @classmethod
    def get_no_of_instance(cls_obj):
        return cls_obj.no_inst
ik1 = Kls()
ik2 = Kls()
print ik1.get_no_of_instance()
print Kls.get_no_of_instance()
@staticmethod & @classmethod

转载


欢迎关注微信公众号(coder0x00)或扫描下方二维码关注,我们将持续搜寻程序员必备基础技能包提供给大家。


相关文章

网友评论

      本文标题:【pyhton】staticmethod & class

      本文链接:https://www.haomeiwen.com/subject/xnxmxftx.html