zoukankan      html  css  js  c++  java
  • 003_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

  • 相关阅读:
    14.14DataSet数据集
    C#第六章学习代码
    C#第五章学习代码
    C#第四章学习代码
    C#第三章学习代码
    C#第二章学习的代码
    记录自学学习C#中写过的代码
    14._13数据集DataSet
    C#中数据库连接的几种写法
    视频、图形图像处理之Opencv技术记录(三)、相关文档页面的列表
  • 原文地址:https://www.cnblogs.com/arun-python/p/6366155.html
Copyright © 2011-2022 走看看