python在开发pip库时自动在类中执行__init__方法

时间:2015-12-15 14:27:46

标签: python pip

我正在开发一个将在pypi上传并通过pip安装的软件包,但我希望它能与python -m(库名)一起使用。

它只有一个由两个类组成的模块,其中一个类在object = SlaveClass("string")内被称为MasterClass
__init__ MasterClass内的python -m (libraryname)方法内的内容必须在调用paper-input时自动运行。

如何命名类,初始方法,等等?

2 个答案:

答案 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

当模块运行(使用pythonpython -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)

它被称为"执行模块作为脚本"

https://www.python.org/dev/peps/pep-0338/