我正在开发一个将在pypi上传并通过pip安装的软件包,但我希望它能与python -m(库名)一起使用。
它只有一个由两个类组成的模块,其中一个类在object = SlaveClass("string")
内被称为MasterClass
。
__init__
MasterClass
内的python -m (libraryname)
方法内的内容必须在调用paper-input
时自动运行。
如何命名类,初始方法,等等?
答案 0 :(得分:4)
Python中没有特权main
方法,就像在C或Java中一样。只需将您想要运行的代码放在顶层。
# beans.py
class Spam:
def eggs(self, ham):
print(ham)
s = Spam() # run Spam's __init__ method
s.eggs("ham") # run Spam's eggs method
现在,当您运行模块时,它将从上到下逐行执行。 Python将运行class
声明语句,包括嵌套的def
(导致使用方法创建一个类),然后它将在底部运行两行代码 - 创建一个Spam
对象并运行其__init__
方法,然后同样调用其eggs
方法。
$ python beans.py
ham
$ python -m beans
ham
顺便提一下,当你导入时,Python也会从上到下执行模块。观看:
>>> import beans
ham
当模块运行(使用python
或python -m
)时,只有 运行的代码很常见。实现这项工作的惯用法是检查当前模块的__name__
:每个模块都有一个名称,如果要导入该文件,则为文件的包限定名称,或{{ 1}}如果它作为主模块运行。
所以我们只是将副作用代码放在"__main__"
块中。
if
导入它不会运行代码...
# beans2.py
class Spam:
def eggs(self, ham):
print(ham)
if __name__ == "__main__":
s = Spam()
s.eggs("ham")
...但是以主模块的身份运行它。
>>> import beans2
>>>
答案 1 :(得分:0)
它被称为"执行模块作为脚本"