文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
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方法的情况下将无法修改对披萨材料的混合方式。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论