【问题标题】:Why is the staticmethod decorator necessary? [duplicate]为什么需要静态方法装饰器? [复制]
【发布时间】:2020-02-09 19:22:36
【问题描述】:

鉴于以下代码运行无误,为什么需要 staticmethod 装饰器?它实际上在做什么?

class Foo:
    def say_hi(name):
        print(f'Hello {name}.')

    @staticmethod
    def say_bye(name):
        print(f'See ya later, {name}.')

my_name = 'Bar...t'
Foo.say_hi(my_name)
Foo.say_bye(my_name)

【问题讨论】:

  • 没有装饰器,say_bye 将是一个实例方法。您是在问为什么首先存在静态方法?
  • 你的非静态方法需要一个 self 作为第一个参数。

标签: python python-3.x decorator


【解决方案1】:

静态方法,很像类方法,是绑定到类而不是对象的方法。

它们不需要创建类实例。因此,它们不依赖于对象的状态。

静态方法和类方法的区别在于:

静态方法对类一无所知,只处理参数。 类方法适用于类,因为它的参数始终是类本身。 https://www.programiz.com/python-programming/methods/built-in/staticmethod

【讨论】:

  • 是的,但为什么非静态方法可以在类上调用?
猜你喜欢
  • 2012-12-28
  • 2011-01-02
  • 2018-02-23
  • 1970-01-01
  • 2011-09-18
  • 2012-03-22
  • 2010-12-31
  • 2016-02-17
  • 2015-02-21
相关资源
最近更新 更多