Как импортировать класс со всеми функциями в Python из другого файла? - PullRequest
0 голосов
/ 07 мая 2020

Я создал «класс V» в файле «V.py» с некоторыми функциями, которые я хочу продолжать использовать в других проектах, но когда я вызываю любую из этих функций, я получаю сообщение об ошибке, что имя не определено. Я перепробовал все решения, которые смог найти, и ничего не исправляет. Надеюсь, кто-нибудь знает, что я делаю не так ..

class V(object):

    def magnitude(self):
        a=0
        for i in range(len(self)):
            for j in range(len(self[i])):
                a= a + self[i][j] **2
        return sqrt(a)

Вызов функции:

from V import V
A = np.array([[1,2,3],[4,0,6],[7,8,9]])
print magnitude(A)

Ошибка:

NameError: name 'magnitude' is not defined

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Выполните рефакторинг вашего метода класса, чтобы он принял параметр, и создайте объект класса перед доступом к методу.

from math import sqrt


class V(object):

    def magnitude(self, A):
        a = 0
        for i in range(len(A)):
            for j in range(len(A[i])):
                a = a + A[i][j] ** 2
        return sqrt(a)
import numpy as np
from V import V

v = V()
A = np.array([[1,2,3],[4,0,6],[7,8,9]])
print (v.magnitude(A))

Это будет работать. Причина в том, что вы пытаетесь получить доступ к методу класса без создания объекта класса и передачи параметра внутри метода. self - это в основном объект, для которого вызывается метод.

0 голосов
/ 07 мая 2020

Вы должны передать величину классу, а не методу try:

from V import V
A = np.array([[1,2,3],[4,0,6],[7,8,9]])
m = V(A)
print (V)
...