您的位置:首页 > 编程语言 > Python开发

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

2017-08-18 17:27 232 查看
知乎问题:
像这个图片里面显示的,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中装饰器的理解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: