Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么staticmethoddecorator是必需的?_Python_Python 3.x_Decorator - Fatal编程技术网

Python 为什么staticmethoddecorator是必需的?

Python 为什么staticmethoddecorator是必需的?,python,python-3.x,decorator,Python,Python 3.x,Decorator,既然下面的代码运行时没有错误,为什么需要staticmethoddecorator?它到底在做什么 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(

既然下面的代码运行时没有错误,为什么需要
staticmethod
decorator?它到底在做什么

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)

静态方法与类方法非常相似,是绑定到类而不是对象的方法

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

静态方法和类方法之间的区别是:

静态方法对类一无所知,只处理参数。 类方法与类一起工作,因为它的参数始终是类本身。
如果没有decorator,
说再见
将是一种实例方法。你是在问为什么静态方法首先存在?你的非静态方法需要一个self作为第一个参数。是的,但是为什么非静态方法可以在类上调用?