Python中的类与模块


19

Python有许多re执行一组特定操作的模块(例如)。您可以调用此模块的函数并获取结果,并且该模块作为一个整体有一个主意(在这种情况下,处理正则表达式)。

类似乎做几乎完全相同的事情,但是它们似乎比模块更多地使用属性。

模块与类在哪些方面有所不同?(我知道我不能对模块进行子类化,是吗?)什么时候应该使用类而不是模块?


您是否知道在调用模块方法时,有时模块只是传递给类的实例?例如参见random模块。但是,我不记得这是否成立re
jscs

1
要了解的相关概念- 模块还是包装?
RBT

Answers:


12

python模块不过是封装可重用代码的程序包。模块通常(但不总是)驻留在其中包含文件的__init__.py文件夹中。模块可以包含函数,也可以包含类。使用import关键字导入模块。

Python提供了一种将定义放入文件中并在脚本或解释器的交互式实例中使用它们的方法。这样的文件称为模块;一个模块中的定义可以导入到其他模块或主模块中。

通过以下链接了解有关Python模块的更多信息:

https://docs.python.org/2/tutorial/modules.html(Python 2) https://docs.python.org/3/tutorial/modules.html(Python 3)

另一方面,类可以在您的主应用程序代码中或在应用程序导入的模块内部定义。类是面向对象编程的代码,并且可以包含属性和方法。

通过以下链接了解有关Python类的更多信息:

https://docs.python.org/2/tutorial/classes.html(Python 2) https://docs.python.org/3/tutorial/classes.html(Python 3)


3
因此,即使模块中只有一个类,在模块中只有一个类也不是一件坏事?我觉得在那种情况下,我通常应该只创建一个模块而不创建一个类。关于何时使用类而不是模块是否存在基本规则?(这就是我要问的...我应该编辑我的问题以使其更清楚吗?)
Pro Q

6
您可以创建一个类的多个实例,但是不能创建模块的实例。您可以将模块与静态类或单例进行比较。
Eneko Alonso

1
模块并不总是驻留在带有文件的__init__.py文件夹中。
multigoodverse18年

1
@ProQ在像Python这样的语言中,您可以在模块中拥有函数,而不是在类中(而不是类,例如Java),通常将静态函数保持在模块级别是一种很好的形式。类暗示实例具有自己的状态。
Turksarama

-2

如果是一堆纯函数,例如re,我将它们放在模块中。当我知道要保留该代码的状态时,我使用一个类(例如,一次读取但文件的数据被多个函数使用的文件)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.