python类方法,静态方法和实例方法

class ClassA(object):

    @staticmethod
    def func_a():
        print('Hello Python')
class Classb(object):


    def func_a():
        print('Hello Python')

class ClassC(object):

    @classmethod
    def func_a(cls):
        print(type(cls), cls)

class ClassD(object):

    def func_a(self):
        print('Hello Python')



if __name__ == '__main__':
    # #静态方法
    # ClassA.func_a()
    # # 也可以使用实例调用,但是不会将实例作为参数传入静态方法
    # ca = ClassA()
    # ca.func_a()


    # #如果一个类方法里面没有self参数,也没有@staticmethod装饰
    # # 只能通过类去调用这个方法,不能通过实例调用
    # Classb.func_a()
    # #实例调用引发异常
    # ca = Classb()
    # ca.func_a()

    # #类方法,无论是类调用还是实例调用,类方法都能正常工作
    # ClassC.func_a()
    # ca = ClassC()
    # ca.func_a()

    # 实例方法,除静态方法与类方法外,类的其他方法都属于实例方法。
    # 实例方法需要将类实例化后调用,如果使用类直接调用实例方法, 需要
    # 显式地将实例作为参数传入。
    # 最左侧传入的参数self,是实例本身。

    #使用实例调用实例调用实例方法
    ca = ClassD()
    ca.func_a()
    #如果使用类方法调用实例方法,需要显式的将实例作为参数传入
    ClassD.func_a(ca)
class ClassA(object):

    @staticmethod
    def func_a():
        print('Hello Python')
class Classb(object):


    def func_a():
        print('Hello Python')

class ClassC(object):

    @classmethod
    def func_a(cls):
        print(type(cls), cls)

class ClassD(object):

    def func_a(self):
        print('Hello Python')



if __name__ == '__main__':
    # #静态方法
    # ClassA.func_a()
    # # 也可以使用实例调用,但是不会将实例作为参数传入静态方法
    # ca = ClassA()
    # ca.func_a()


    # #如果一个类方法里面没有self参数,也没有@staticmethod装饰
    # # 只能通过类去调用这个方法,不能通过实例调用
    # Classb.func_a()
    # #实例调用引发异常
    # ca = Classb()
    # ca.func_a()

    # #类方法,无论是类调用还是实例调用,类方法都能正常工作
    # ClassC.func_a()
    # ca = ClassC()
    # ca.func_a()

    # 实例方法,除静态方法与类方法外,类的其他方法都属于实例方法。
    # 实例方法需要将类实例化后调用,如果使用类直接调用实例方法, 需要
    # 显式地将实例作为参数传入。
    # 最左侧传入的参数self,是实例本身。

    #使用实例调用实例调用实例方法
    ca = ClassD()
    ca.func_a()
    #如果使用类方法调用实例方法,需要显式的将实例作为参数传入
    ClassD.func_a(ca)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值