【Python】python类中方法的预定义

来源:互联网 发布:网络层的4个功能 编辑:程序博客网 时间:2024/06/02 05:39

知乎问题:

像这个图片里面显示的,self.prediction首先声明了下然后下面给出了定义,然后optimize又调用这个函数但是没有用self.prediction()这样的方式而是像用变量一样直接用self.prediction,,像请教一下这是什么操作?



知乎回答:

python中变量和函数都不需要提前声明,函数直接定义就可以了。这里提前声明不知道是写的人习惯了其它语言,还是为了可读性。

在python中一切皆对象,函数也不例外。因此可以将函数绑定到变量上或者传递,使用时后面加上()就可以调用。

在下面的方法中self.prediction后面没有加(),但是又把它和一个浮点数相加,说明此时它的值是一个数字。如果是平常的写法,函数对象不可能与数字相加。

我推测关键处在prediction定义时的装饰器,它可能有类似于property装饰器的作用,将self.prediction转化成了一个属性,这样不需要加()也可以返回值了。

答者补充

因为Python语言的动态性,在写代码时,代码检查工具可能认为self没有这样的属性,这时你预先声明了,它就不会报错。

作者:松直

链接:https://www.zhihu.com/question/62321510/answer/197547467

python修饰器

要理解python的装饰器,我们首先必须明白在Python中函数也是被视为对象。函数既然作为一个对象,因此:

1. 其可以被赋给其他变量

2. 其可以被定义在另外一个函数内

3. 作为参数传递给函数

其实它可被视为封装器。也就是说,它能够让你在装饰前后执行代码而无须改变函数本身内容。

更多见:python中装饰器的理解



原创粉丝点击