我正在创建自己的python模块,它包含一些我想要使用的函数。我想知道如何做这些事情:
答案 0 :(得分:2)
使用语法
from mymodule import myobject
您可以导入在模块文件顶层声明的任何对象(您也可以通过声明__all__
对象中的所有“公共”对象来覆盖它以隐藏某些对象。但正如@BrenBam所说,无论你是from mymodule ...
还是import module
,解释器仍然会加载该模块中的所有顶级对象,但只暴露你正在选择的那些对象。
这是你要问的OOP软件设计问题。根据定义,函数具有参数和一个输出,这是关于所有的,例如:
function foo(arg1, arg2):
return arg1+arg2
它的用法不能简单:
>>> print foo(1,2)
3
方法是绑定到类的函数,(在python中)具有对当前对象(或类)的引用:
class Foo():
def set_arg1(self, arg1):
self.arg1 = arg1
def set_arg2(self, arg2):
self.arg2 = arg2
def foo(self):
return self.arg1+self.arg2
然后将Foo
类实例化为一个对象,并使其适用于数据:
>>> bar = Foo()
>>> bar.set_arg1(1)
>>> bar.set_arg2(2)
>>> print bar.foo()
3
然后当你制作一个模块时,你会根据你需要它们来声明函数和对象。如果你有一组函数在同一组变量上工作,你需要将它们封装为一个类中的“成员”,将函数转换为将作用于这些成员的方法,为类创建行为并公开类的用户的类。然后,他们会将你的班级变成具有自己价值观的对象并且快乐。
如果你的函数正在使用参数,将它们转换为一组结果,而不与函数之外的变量进行交互,那么你将希望保持它们的原样:只是简单的函数。
所以,总而言之,这是软件设计的问题,在互联网和图书馆中有很多关于这些主题的书籍。我很确定你可以找到关于“what's the best OO software design book?”
的问题在分发代码时,使用distutils
/ setuptools
安装模块总是更好。为了帮助您开发软件,您最好使用像zc.buildout
或virtualenv
这样的工具(第一个更强大,但更复杂,当您需要开发环境构建系统时通常很有用,第二个非常简单易用,有助于为开发做好准备。
你可以在那里找到教程:
HTH
答案 1 :(得分:1)
你不一定要在python中创建一个类,但是使用类会帮助你将函数和变量包装到一个对象中。