Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
关于如何';自我';在实例成员和静态成员之间标识? 我正在学习OOP,所以我对下面两条语句的问题对许多人来说可能非常基本,但我只想检查一下我是否以错误的方式使用Python/OO术语: -必须将“self”明确定义为每个类方法中的第一个参数。 -Python明确要求self作为类中定义的方法的第一个参数,这使人们清楚地知道实例方法和静态方法之间的区别。 如果关于“self”关键字的陈述是正确的,那么我推断作为方法定义中的参数或作为变量的前缀是否正确;“self”一词的出现通常表示方法或变量是静态的,而“self”一词的缺失通常表示方法或变量是实例方法或变量?_Python_Oop - Fatal编程技术网

关于如何';自我';在实例成员和静态成员之间标识? 我正在学习OOP,所以我对下面两条语句的问题对许多人来说可能非常基本,但我只想检查一下我是否以错误的方式使用Python/OO术语: -必须将“self”明确定义为每个类方法中的第一个参数。 -Python明确要求self作为类中定义的方法的第一个参数,这使人们清楚地知道实例方法和静态方法之间的区别。 如果关于“self”关键字的陈述是正确的,那么我推断作为方法定义中的参数或作为变量的前缀是否正确;“self”一词的出现通常表示方法或变量是静态的,而“self”一词的缺失通常表示方法或变量是实例方法或变量?

关于如何';自我';在实例成员和静态成员之间标识? 我正在学习OOP,所以我对下面两条语句的问题对许多人来说可能非常基本,但我只想检查一下我是否以错误的方式使用Python/OO术语: -必须将“self”明确定义为每个类方法中的第一个参数。 -Python明确要求self作为类中定义的方法的第一个参数,这使人们清楚地知道实例方法和静态方法之间的区别。 如果关于“self”关键字的陈述是正确的,那么我推断作为方法定义中的参数或作为变量的前缀是否正确;“self”一词的出现通常表示方法或变量是静态的,而“self”一词的缺失通常表示方法或变量是实例方法或变量?,python,oop,Python,Oop,第一个参数的名称在语法上并不重要。对于常规方法,这是self,但这不是强制的 语法上重要的是如何构造方法。方法是一个普通方法,除非通过或内置函数转换为类方法或静态方法,否则它将接收调用它的实例作为其第一个参数 类方法接收该类作为其第一个参数,按照惯例,该类被命名为cls。虽然由于类方法不如普通方法常见,但我发现与常规方法相比,与常规方法的偏差更多klass并非完全不常见,有时人们出于习惯而粗心地使用self 静态方法不接收任何自动参数 class ExampleClass(object):

第一个参数的名称在语法上并不重要。对于常规方法,这是
self
,但这不是强制的

语法上重要的是如何构造方法。方法是一个普通方法,除非通过或内置函数转换为类方法或静态方法,否则它将接收调用它的实例作为其第一个参数

类方法接收该类作为其第一个参数,按照惯例,该类被命名为
cls
。虽然由于类方法不如普通方法常见,但我发现与常规方法相比,与常规方法的偏差更多
klass
并非完全不常见,有时人们出于习惯而粗心地使用
self

静态方法不接收任何自动参数

class ExampleClass(object):

    def sample_instance_method(self):
        # this is a normal instance method
        pass

    @classmethod
    def sample_class_method(cls):
        # this is a class method, and will not receive the individual instance if called on one
        pass

    @staticmethod
    def sample_static_method():
        # this is a static method, and will not receive either the instance or the class when called
        pass

不,相反

但是我能理解为什么怀疑,这些陈述令人困惑:你把
self
作为实例方法中的第一个参数,而不是把它放在静态方法中

请注意,尽管没有必要命名第一个参数
self
,但最好遵循该约定,因为读者更清楚

另外,不要将
self
命名为静态方法中的第一个参数,这是可能的,是的,但您肯定会让读者感到困惑