理解类对象,类属性,实例属性,实例对象,类方法,静态方法,实例方法

类对象和实例对象都可以分别看做python的命名空间。创建类的实例对象时,分为两步,先去调用__new__方法创建实例对象,定义一个命名空间;再去调用__init__方法对申请的命名空间进行初始化,其中的参数self指向新创建的实例对象;

类对象中有类属性和方法(类方法、静态方法、实例方法),类可以实例化不同的对象,即为实例对象,实例对象中有实例属性。

类对象的一些公共属性封装为类属性,不同的实例对象封装各自的实例属性。

类访问类属性,实例对象访问实例属性。如果实例对象需要访问重构类属性,可以使用实例对象.__class__.类属性=新的属性值。

实例对象可以调用实例方法、类方法和静态方法,但类对象只能调用类方法和静态方法。

类方法前会使用装饰器:@classmethod,传入能表示此类对象的参数,如,cls;

实例方法就是一个普通方法,传入能表示实例对象的参数,固定传入self;

调用实例方法会传入对应的实例对象引用,调用类方法会传入类对象引用,类方法和实例方法本质区别就是传入的引用不同,方法指向的对象不同,那也就可以各自在方法里修改对应的实例属性和类属性。

为什么需要静态方法呢?某些操作和类对象、实例对象均无关,此时就能定一个辅助函数。如果定义在类外,直接调用方法也可以,但如果一个模块下有多个类,需要分别实现各自的辅助函数,这个时候首先被定义的函数功能失效,默认仅生效最新定义的那个函数,就无法确定这样的一个辅助函数,实际是为哪个类所调用。那也就是说,一个方法不需要传如实例对象和类对象的引用,又想归属到类里面,在方法前使用装饰器:@staticmethod,就可以定义一个静态方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值