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