python中的面向对象编程 我正在读Dietel的C++程序设计书。在这本书中,他们提到程序员应该如何只发布代码的接口部分,而不发布实现
因此,将这一点带到python: 我有两个文件: 1) 实现文件=accountClass.py和 2) 接口文件=useAccountClass.py 我已经编译了实现文件并获得了.pyc文件。因此,当我向其他人提供代码时,我会向他提供.pyc文件和接口文件,对吗 另外,如果我只向其他人提供.pyc文件,我能指望他自己编写接口吗?我要说不。但我有一个令人不安的疑问: numpy和scipy的创建者没有与我们的最终用户共享实现。我认为他们也没有共享任何接口。但是我们仍然可以在numpy和scipy中搜索不同的类及其方法。所以,用这个numpy和scipy的例子,我想我想问的是: 如果我只向其他人提供编译后的实现文件(在本例中是accountClass.pyc),那么其他人是否可以为我的代码创建接口?那个人如何知道我在实现中定义了哪些类和方法?我是说,他们会使用python中的面向对象编程 我正在读Dietel的C++程序设计书。在这本书中,他们提到程序员应该如何只发布代码的接口部分,而不发布实现,python,oop,Python,Oop,因此,将这一点带到python: 我有两个文件: 1) 实现文件=accountClass.py和 2) 接口文件=useAccountClass.py 我已经编译了实现文件并获得了.pyc文件。因此,当我向其他人提供代码时,我会向他提供.pyc文件和接口文件,对吗 另外,如果我只向其他人提供.pyc文件,我能指望他自己编写接口吗?我要说不。但我有一个令人不安的疑问: numpy和scipy的创建者没有与我们的最终用户共享实现。我认为他们也没有共享任何接口。但是我们仍然可以在numpy和scip
if __name__ = "__main__" :
blah blah
> P> DEETEL对C++程序员的建议不适用于Python,原因有多种:
dis
一样简单)。我认为这是一个次要的技术,因为这已经是一个错误的问题了。 你不应该混淆“用户界面”和“类接口”。如果您有一个useAccountClass文件,那么该文件可能会使用accountClass文件中定义的类和方法执行某些任务,如果我理解正确的话
如果您将文件发送给其他人,他们不应该“猜测”您编译的类的功能。这就是文档的目的:描述模块中包含的函数(编译或未编译)、它们采用的参数、返回的值以及它们要执行的任务的“意义” 作为一个抽象示例,假设您有一个图像处理类。如果该类具有函数findCircles(image)
,文档应说明它获取图像(可能包含圆),并返回图像中包含的圆心坐标列表或数组。如何检测圆并不重要,您不需要知道如何使用该功能。现在,如果调用函数像findCircles(image,gaussian\u threshold=10)
,调用方必须知道函数使用了一些“gaussian\u threshold”参数,也就是说,调用方需要知道函数的内脏,在面向对象编程中这是不好的。如果您决定在将来使用另一种算法,那么使用该函数的所有代码都必须重写,因为gaussian_阈值
很可能不再有意义
因此,在OOP中,接口是一种抽象,用于仅与对象通信它执行任务所需的规范参数或输入