美文网首页
python中的method

python中的method

作者: 将军红 | 来源:发表于2019-12-19 17:06 被阅读0次
    # coding=utf-8
    
    
    class Kls(object):
        def __init__(self, data):
            self.data = data
    
        def printd(self):
            print(self.data)
    
        @staticmethod
        def smethod(*arg):
            print('Static:', arg)
    
        @classmethod
        def cmethod(*arg):
            print('Class:', arg)
    
        """
        @classmethod
        def cmethod(cls, *arg):
            print('Class:', arg)
        
        # class method: 不管这个方式是从实例调用还是从类调用,它都用第一个参数把类传递过来
        """
    
    
    ik = Kls(23)
    ik.printd()     # 23
    ik.smethod()    # Static: ()
    ik.cmethod()    # Class: ( <class '__main__.Kls'>, )
    
    # Kls.printd()    # TypeError: unbound method printd() must be called with Kls instance as first argument (got nothing instead)
    Kls.smethod()   # Static: ()
    Kls.cmethod()   # Class: ( <class '__main__.Kls'>, )
    
    # Note:
    # class method: 不管这个方式是从实例调用还是从类调用,它都用第一个参数把类传递过来
    
    # staticmethod 跟普通函数一样,绑定到类对象实例上,
    # vs classmethod: classmethod 可以做需要class参与的动作;staticmehod不行
    # vs normalmethod: 它本质上就是一个函数,调用方式和调用函数一样,不同的是它不关注对象和对象内部属性。
    # 写到外部会混乱,让类不可控。写到类里面可以很好组织代码
    

    相关文章

      网友评论

          本文标题:python中的method

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