面向对象高级特性之--类属性、实例属性、类方法、静态方法

本文深入探讨了Python中类属性与实例属性的区别,以及类方法、静态方法和普通方法的使用方式。通过具体实例,详细解析了不同方法的调用机制及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.类属性与实例属性

1.类属性

  • 类属性就是所有类对象都拥有的属性,它被所有类对象的实例对象共有;
  • 占用内存:类属性在内存中只存在一个副本
  • 作用域:通过类名、对象名均可访问

2.实例属性

  • 即对象属性,不被所有类对象的的实例对象所共有
  • 占用内存:有几个对象,就有几个实例属性
  • 作用域:只能通过对象名来访问

二.类方法、静态方法、普通方法

1.类方法

类方法是类对象拥有的方法
一般用装饰器 @classmethod将其标识为类方法。
@classmethod: 将函数对象转化为类方法。
1)对于类方法,默认有一个cls参数
2)能够被实例对象和类去调用

2.静态方法

一般以装饰器 @staticmethod来标识其为静态方法

  • 静态方法不需要传入self参数
  • 能够通过实例对象和类名去访问
    python解释器自动将对象传递给类里面定义的方法

3.普通方法

  • 默认有个self参数
  • 只能被实例对象调用

4、举例实现

class classname:
    @classmethod
    def a(cls):
        print('类方法')

    @staticmethod
    def fun():
        print('静态方法')

    # 普通方法
    def b(self):
        print('普通方法')

if __name__ == '__main__':
    # l类调用类方法
    classname.a()
    # 类调用静态方法
    classname.fun()

    c=classname()
    # 对象调用类方法
    c.a()
    # 对象调用静态方法
    c.fun()
    # 对象调用普通方法
    c.b()
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值