封装函数的问题

来源:4-3 训练数据集,测试数据集

Fastpengmi

2019-11-11

这章涉及到一些函数和类的问题,我去别的课程大概recap了一下,有几个概念想再请教bobo老师。
图片描述
Q1: 私有函数 在我们自己写的kNN.py文件中,有predit(self,X_predict)和__predict(self,x),前者是传入预测数据集的,这个函数里面调用了私有函数__predict。 是不是可以理解为第一个函数是用来传入外部参数的,私有函数是无法被外部调用的。同理私有变量也是,仅仅在我自己写的文档中可以引用,外部即使导入了这个模块也无法引用?

Q2:模块封装
图片描述
这里加了个__inti__.py (空白py文件),这样的用意是模块封装的标准格式要求吗? 说明我的大文件夹kNN_function 可以作为一个模块被调用?

写回答

1回答

liuyubobobo

2019-11-11

Q2:

你的理解是正确的。


Q1:

对。predict 是供外部用户调用使用的。__predict 是方便模块编写者使用的。从 OO 设计的角度,私有函数和私有成员变量是不能被外部调用的。但由于 Python 不完全遵守标准的面向对象编程范式,所以其实外部可以调用到。(Python 没有 public 或者 private 的关键字。)因此,我们使用方法前加两个下划线的方式提醒:这个方法特殊,是私有的。(这本身是 Python 的编程规范)。


继续加油!:)

0
1
Fastpengmi
明白了!谢谢bobo老师
2019-11-11
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程