第46页 | Python高手之路 | 阅读 ‧ 电子书库

同步阅读进度,多语言翻译,过滤屏幕蓝光,评论分享,更多完整功能,更好读书体验,试试 阅读 ‧ 电子书库

7.3 静态方法

静态方法是属于类的方法,但实际上并非运行在类的实例上。具体见示例7.10.

示例 7.10 @staticmethod的用法

class Pizza(object):
  @staticmethod
  def mix_ingredients(x, y):
    return x + y
  def cook(self):
    return self.mix_ingredients(self.cheese, self.vegetables)

如果愿意的话,可以像非静态方法那样写mix_ingredients,它会接收self作为参数但不会真地使用它。装饰器@staticmethod提供了以下几种功能。

 
Python不必为我们创建的每个Pizza对象实例化一个绑定方法。绑定方法也是对象,创建它们是有开销的。使用静态方法可以避免这种开销:  >>> Pizza().cook is Pizza().cook
  False
  >>> Pizza().mix_ingredients is Pizza.mix_ingredients
  True
  >>> Pizza().mix_ingredients is Pizza().mix_ingredients
  True
 
提高代码的可读性。当看到@staticmethod时,就知道这个方法不依赖于对象的状态。可以在子类中覆盖静态方法。如果使用一个定义在顶层模块中的mix_ingredients函数,那么一个继承自Pizza的子类在不重写cook方法的情况下将无法修改对披萨材料的混合方式。

请支持我们,让我们可以支付服务器费用。
使用微信支付打赏


上一页 · 目录下一页


下载 · 书页 · 阅读 ‧ 电子书库