您的位置:首页 > 其它

为什么需要静态方法?

2017-11-16 21:24 225 查看
首先,定义一个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 可以直接使用静态方法,而避免了去实例化一个对象。实例化对象需要消耗资源的,静态方法避免了这一切。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐