python 实例方法/类方法/静态方法的对比

class Demo(object):
    '''实例方法/类方法/静态方法的对比'''
    num = 0  # 类属性

    def defaultFun(self):
        '''实例方法:必须实例化类之后才能被调用,它是要面向实例化对象的一个实例方法。'''
        print (u'普通方法')
        print (self)
        print(self.num)

    @classmethod
    def classFun(cls):
        '''类方法:它第一个参数必须是cls,并与class本身是绑定关系,它是属于类方法,且不属于实例方法,但可被实例对象调用
                    它不需要实例化就可以被类本身调用
        '''
        print (u'类方法')
        print(cls)
        print(cls.num)  # 类方法调用类属性
        Demo().defaultFun()  # 类方法调用实例方法
        Demo().staticFun()  # 类方法调用静态方法

    @staticmethod
    def staticFun(*arg):
        '''静态方法:它与任何对象都没有联系,等同于在class外定义的方法,它只属于函数
                不传递传递默认self参数的方法(该方法也是可以直接被类调用的,但是这样做不标准)
        '''
        print (u'静态方法')
        print (Demo.num)  # 属性是可以直接用类本身调用的


if __name__ == '__main__':
    demo = Demo()
    print (demo)  # <__main__.Demo object at 0x000001C989500358>
    print (demo.defaultFun)  # <bound method Demo.defualtFun of <__main__.Demo object at 0x000001C989500358>>
    print (demo.classFun)  # <bound method type.classFun of <class '__main__.Demo'>>
    print (demo.staticFun)  # <function staticFun at 0x000001C9894F9E48>
    print (demo.defaultFun())
    print (demo.classFun())
    print (demo.staticFun())

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值