返回介绍

7.3 静态方法

发布于 2024-01-23 21:41:46 字数 864 浏览 0 评论 0 收藏 0

静态方法是属于类的方法,但实际上并非运行在类的实例上。具体见示例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方法的情况下将无法修改对披萨材料的混合方式。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文