封装函数的问题
来源: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回答
-
Q2:
你的理解是正确的。
Q1:
对。predict 是供外部用户调用使用的。__predict 是方便模块编写者使用的。从 OO 设计的角度,私有函数和私有成员变量是不能被外部调用的。但由于 Python 不完全遵守标准的面向对象编程范式,所以其实外部可以调用到。(Python 没有 public 或者 private 的关键字。)因此,我们使用方法前加两个下划线的方式提醒:这个方法特殊,是私有的。(这本身是 Python 的编程规范)。
继续加油!:)
012019-11-11
相似问题