Вызов метода из другого файла Python - PullRequest
5 голосов
/ 16 ноября 2009

Поскольку я в настоящее время изучаю Django / Python, я пока еще не использовал концепцию классов. Насколько я знаю, метод не статичен ... это просто стандартное определение.

Итак, скажем, у меня есть этот пакет с именем Example1 с views.py, который содержит этот метод:

def adder(x,y):
  return x + y

Тогда у меня есть Example2, который также имеет views.py, где я хотел бы использовать этот метод adder.

Как бы я справился с этим?

РЕДАКТИРОВАТЬ: В Java это был бы простой экземпляр, тогда instantiation.Method() или если бы он был статическим, это было бы SomeClass.Method(), однако я не уверен, как мне подходить к этому в Python.

Ответы [ 3 ]

7 голосов
/ 16 ноября 2009

Python имеет методы уровня модуля и уровня класса. В этой концепции «модуль» - это особый класс, который вы получаете, используя import вместо Name(). Попробуйте

from Example1.views import adder as otherAdder

чтобы получить доступ к методу уровня модуля. Теперь вы можете позвонить otherAdder(), и он выполнит код в другом модуле. Обратите внимание, что метод будет выполняться в контексте Example1.views, то есть когда он ссылается на вещи, он будет выглядеть там.

6 голосов
/ 16 ноября 2009

Попробуйте:

from Example2.views import adder as myadder
myadder(x,y)

Если вы не уверены, вы всегда можете запустить оболочку Python, а затем использовать команду dir , чтобы просмотреть содержимое пакетов и посмотреть, что можно использовать.

Редактировать: Обновлено из комментариев, чтобы использовать 'как'

OR

# use ...views as myviews if you need to avoid name conflict on views
from Example2 import views
views.adder(x,y)
3 голосов
/ 16 ноября 2009

Обычно вы импортируете «модули»

Я бы предложил:

from Example2 import views as views2

x = views2.adder(1, 2)

Надеюсь, я правильно понял, так как до сих пор не использовал пакеты; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...