为什么需要静态方法?

首先,定义一个Pizza类:

class Pizza(object):
    def cook(self):
          return 0

我们可以得到:

# cook是一个方法。
>>> Pizza.cook
<function Pizza.cook at 0x029A10C0>
# 要调用cook方法必须实例化Pizza类。
>>> Pizza.cook()
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
Pizza.cook()
TypeError: cook() missing 1 required positional argument: 'self'
>>> Pizza().cook()
0
#不同的实例化不相同
>>> Pizza() is Pizza()
False
# cook方法依赖于类的实例
>>> Pizza().cook is Pizza().cook
False
>>>


然后,定义一个静态方法:
class Pizza(object):
       @staticmethod
       def cook():#不需要传入参数
             return 0;

我们可以得到:

#静态方法也是方法的一种
>>> Pizza.cook
<function Pizza.cook at 0x02B310C0>
#调用静态方法cook不需要实例化Pizza类。
>>> Pizza.cook()
0
# 不同的实例化不相同
>>> Pizza() is Pizza()
False
# 不同实例的cook方法相同,实例与类的cook方法相同 ——> 静态方法cook不需要依赖于类的实例。
# 静态方法即可以被类调用,同样类的实例也可以调用,只是这样会耗用更多的资源而已(不专业)。
>>> Pizza().cook is Pizza().cook
True
>>> Pizza().cook is Pizza.cook
True
>>>
复制代码


可得结论:
       类的方法在使用时,必须实例化类;而静态方法不需要依赖于类的实例化。Python 可以直接使用静态方法,而避免了去实例化一个对象。实例化对象需要消耗资源的,静态方法避免了这一切。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值