美文网首页
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