Python中为什么要定义方法,python函数在调用前不需要定义
为什么Python必须在方法定义和调用中显示使用“self”?
这一思想借用了Modula-3语言。由于许多原因,它被证明是非常有用的。
首先,更明显的显示出,使用的是方法或实例属性而不是局部变量。
读self.x或self.meth()可以清楚地看出,即使不知道类的定义,也会用到实例变量或方法。
在C中,你可以通过缺少局部变量声明来判断(假设全局变量很少或者很容易识别)3354但是Python中没有局部变量声明,所以你必须查找类定义来确定。
一些C和Java编码标准要求实例属性有m_前缀,所以这种明确性在这些语言中仍然有用。
其次,这意味着如果要显式引用或从特定类调用该方法,不需要特殊语法。
在C中,如果要在派生类中重写基类中的方法,必须使用:3360运算符——在Python中,可以编写baseclass.methodname (self,参数列表)。
这对于__init__()方法非常有用,尤其是当派生类方法想要扩展同名的基类方法,但必须以某种方式调用基类方法时。
最后,它解决了变量赋值的语法问题:
对于Python中的局部变量(根据定义!)那些在函数体中赋值的变量(没有显式声明为全局的)被赋值,解释器必须以某种方式被告知赋值是给一个实例变量而不是局部变量赋值,最好通过语法来完成(出于效率原因)。
c通过声明做到这一点,但是Python没有声明。如果只是为了这个目的而介绍他们,那就太可惜了。
使用显式self.var很好地解决了这个问题。类似地,对于使用实例变量,必须编写self.var意味着对方法内部的非限定名的引用不必搜索实例的目录。
换句话说,局部变量和实例变量存在于两个不同的名称空间中,您需要告诉Python使用哪个名称空间。
了解更多关于Python的知识。a、请关注Python视频教程!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。