天天看点

Python 进阶_OOP 面向对象编程_静态方法和类方法目录静态方法类方法使用函数修饰符来声明静态方法和类方法

<a href="#%E7%9B%AE%E5%BD%95">目录</a>

<a href="#%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95">静态方法</a>

<a href="#%E7%B1%BB%E6%96%B9%E6%B3%95">类方法</a>

<a href="#%E4%BD%BF%E7%94%A8%E5%87%BD%E6%95%B0%E4%BF%AE%E9%A5%B0%E7%AC%A6%E6%9D%A5%E5%A3%B0%E6%98%8E%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95%E5%92%8C%E7%B1%BB%E6%96%B9%E6%B3%95">使用函数修饰符来声明静态方法和类方法</a>

静态方法仅是类中的函数, 不需要绑定实例, 也就是说静态方法的定义不需要传入 self 参数. 静态方法不属于类的某一个实例对象, 而是属于类本身, 所以不需要绑定到实例对象. 可以通过 className.staticMethodName 的方式来调用.

特点: 只能使用静态变量, 所以始终占用同一个内存, 执行效率更高, 但不会被自动回收.

应用场景: 用于处理一些不会经常改变, 但却会被频繁调用的数据. EG: Connect String/Config info

Note: 静态成员不能访问非静态成员, 因为非静态成员只有在被调用时才会被加载进内存, 而静态成员是长驻内存且不会被自动回收的, 所以非静态成员却可以访问静态成员.

类方法和实例方法类似, 区别在于前者需要定义 类对象参数 cls 而后者需要定义 实例对象参数 self. 两者在绑定方法调用中, 都会自动的传递相应的对象到第一次参数 (cls/self) 中.