如何从不同的文件导入Python中包含所有函数的类?
我在文件“V.py”中创建了“class V”,其中包含一些函数,我希望在其他项目中继续使用这些函数,但是当我调用其中任何一个函数时,会出现一个错误,即没有定义名称。我尝试了所有我能找到的解决方案,但没有任何解决办法。希望有人知道我做错了什么如何从不同的文件导入Python中包含所有函数的类?,python,python-2.7,Python,Python 2.7,我在文件“V.py”中创建了“class V”,其中包含一些函数,我希望在其他项目中继续使用这些函数,但是当我调用其中任何一个函数时,会出现一个错误,即没有定义名称。我尝试了所有我能找到的解决方案,但没有任何解决办法。希望有人知道我做错了什么 class V(object): def magnitude(self): a=0 for i in range(len(self)): for j in range(len(self[i]
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
您应该将量值传递给类,而不是传递给方法 尝试:
重构类方法以获取参数,并在访问该方法之前创建类的对象
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)
这会奏效的。
原因是您试图访问类方法,而不创建类对象,也不在方法内部传递参数
self
基本上就是调用该方法的对象。怎么办?它应该是V.V import-magnity中的。然后您对Magnite的调用将起作用。请尝试使用打印V.Magnite(A)
您可以检查以下内容:感谢您的回复!我运行了代码,它给了我一些wierd错误“TypeError:magnize()正好取1个参数(2个给定)”。但是,如果我在原始文件中运行它,它将正常工作。您是否更改了类?我已经测试过这个代码不应该被破坏
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))