python中类的实例方法、静态方法和类方法

今天聊下类中的实例方法,静态方法和类方法的区别以及如何使用。

class Foo(object):
    class_property = 100

    def __init__(self):
        self.instance_property = 200

    def instance_method(self):  #第一个参数必须是实例对象“self”,通过它传递实例或者类的属性和方法,只能由实例对象调用
        print('这里是实例方法,只能被实例对象调用')        
        self.class_property = 55  #通过self修改类属性
        self.instance_property = 55   #通过self修改实例属性
        print('实例方法可以访问类属性和实例属性,class_property = %s,istance_property = %s'
              % (self.class_property, self.instance_property))

    @classmethod
    def class_method(cls): #第一个参数必须是当前类对象“cls”,通过它传递类的属性和方法,实例对象和类对象都可以调用
        print('这里是类方法,可以被类和实例对象调用')
        cls.class_property = 66  #通过cls修改类属性
        print('类方法只可以访问类属性,不能访问实例属性,class_property = %s' % cls.class_property)

    @staticmethod  #参数没有self和cls参数,所以方法体内不能使用类和实例的任何属性和方法,实例对象和类对象都可以调用
    def static_method():
        print('这里是类的静态方法,可以被类和实例对象调用')        
        print(Foo.class_property)
        print(Foo().instance_property)
        print('静态方法不能直接访问任何类属性和实例属性,使用类对象和实例对象来引用类属性和实例属性')
Foo.class_method()
Foo.static_method()
foo = Foo()
foo.instance_method()
foo.class_method()
foo.static_method()

1,其中实例对象的权限最大,可以使用类属性,实例属性,可以调用类方法,实例方法和静态方法。

2,类方法和静态方法可以由类直接调用,无需实例化,这就方便了该类方法的使用,可以将一些常用的工具类的方法封装为类的静态方法或者类方法,其中静态方法和类之间没有什么联系,只是为了方便管理,方便使用。

3,原则上,类方法是将类本身作为对象进行操作的方法。另外,如果需要继承,也可以定义为类方法。

4,在静态方法内如有要引用类属性的话必须是否类对象来引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值