我对python很陌生,对一些事情不确定。
- 类应该在单独的文件中吗?
- 独立脚本是否有 main 方法?如果是这样,这是如何工作的,因为我有一个没有被调用的主要方法
- 单元测试目录通常放在哪里,它如何“包含”它正在测试的文件?
我对python很陌生,对一些事情不确定。
这里有很多基础,通过将这些点分成单独的问题/查询,您可能会得到更好的服务:)
我会拒绝不必要地将类拆分为单个文件。有些类可能严重依赖于其他类,我(个人)喜欢将它们放在同一个文件中。我觉得最好的约定是基于功能创建文件,而不是为每个类创建一个单独的文件。
我从 Pocoo 项目(如 Flask 和 Jinja2)中获得了很多灵感。Jinja2 源提供了一个在文件中“捆绑”某些相关类的极好示例:Github
独立脚本通常使用类似if __name__ == '__main__'
, 来检查是否直接执行(例如python scriptname.py
),然后通常执行一个函数main()
(感谢 Mike 纠正我的错误)。
为了更好地帮助解决您main
不被调用的问题,我建议您显示您尝试使用的代码。
有许多不同的方法可以做到这一点,但约定似乎是在项目内的tests
, test
,testsuite
目录中。这个问题的后半部分变得相当棘手,因为 Python 导入取决于您的 Python 项目的结构/类型(它是 Python 包吗?一个独立的脚本集合?)和您的PYTHONPATH
.
这个SO 帖子是一个很好的起点,可以考虑在哪里放置测试,尽管一般的答案似乎是“最适合你/你的团队的地方”:)。
在一个稍微相关的说明中,我还建议研究Nose测试框架,因为它从 Python 测试中删除了很多样板。
我将回答问题 1 和 2。
1)这取决于。如果您的课程很小,则可以将它们放在同一个文件中。如果它们变大,它们通常保存在单独的文件中。
2)不,不需要有一个主要的方法。但是,对于脚本来说,这是一个非常常见的成语:
def main():
# Your code
# At the bottom of the file
if __name__ == '__main__':
main()
这样,您main
只会在文件作为脚本运行时运行,但在作为模块导入时不会运行。当您导入模块时,Python 只会执行它在函数中遇到的任何代码,因此如果您以后想将脚本作为模块重用,这可以保护您。
这只是一个成语,main
在 python 中没有特殊含义,所以你不必调用它或任何东西。
What does <if __name__==“__main__”:> do?
import directoryname.module.
. 您可以通过from directoryname.module import ClassName
.