从不同的Python文件调用方法

Fed*_*rer 5 python django methods

由于我目前正在学习Django/Python,我还没有真正使用过Classes的概念.据我所知,该方法不是静态的......它只是一个标准的定义.

所以,假设我Example1使用views.py包含此方法的包来调用此包:

def adder(x,y):
  return x + y
Run Code Online (Sandbox Code Playgroud)

然后,我有一个Example2其中也有一个views.py,我想用这个方法adder.

我怎么会这样做?

编辑:在Java中它将是一个简单的实例化然后instantiation.Method()或者如果它是静态的,SomeClass.Method()但是我不确定我应该如何在Python中处理它.

Aar*_*lla 7

Python具有模块级和类级方法.在这个概念中,"模块"是一个非常特殊的类,您可以使用import而不是Name().尝试

from Example1.views import adder as otherAdder
Run Code Online (Sandbox Code Playgroud)

访问模块级方法.现在你可以调用otherAdder()它,它将执行另一个模块中的代码.请注意,该方法将在上下文中执行Example1.views,即当它引用事物时,它将在那里查看.


Jes*_*ogt 6

尝试:

from Example2.views import adder as myadder
myadder(x,y)
Run Code Online (Sandbox Code Playgroud)

如果您不确定,可以随时启动python shell,然后使用dir命令查看包的内容以查看可以使用的内容.

编辑:从评论更新以使用'as'

要么

# use ...views as myviews if you need to avoid name conflict on views
from Example2 import views
views.adder(x,y)
Run Code Online (Sandbox Code Playgroud)

  • 这应该有效,但会覆盖一个潜在的本地加法器...... _bravado写的是...... (2认同)