调用不同文件的模块的类属性

时间:2017-06-23 19:37:30

标签: python oop python-3.6

我在使用class属性时遇到问题,而在导入该模块时没有在不同的文件中调用该类。 我正在制作一个numpy clone,我需要调用文件1中名为Array的类中的属性 - numpyClone.py:

#file:  numpyClone.py
class Array(object):
def __init__(self,lista=None):
    self.lista = lista
    self.x=[]

def __str__(self):
    return self.__class__.__name__+"("+str(self.lista)+')'

def arange(self,start,stop,step):
    x=self.x
    value=start
    while value<=stop:
        x.append(value)
        value+=step
    return self.__class__(Array(x).lista)

并且在文件2--test.py中我需要能够导入数组函数而不需要调用Array:

import numpyClone as np
print(np.Array([1,2,3])
print(np.arange(1,10,1)

应该返回:

>>>Array([1, 2]) #works
>>>Array([1, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0]) #does not work, return error: 
#AttributeError: module 'numpyClone' has no attribute 'arange'

但是,该模块不存在于第一个文件的目录中。如果我要在我的第一个文件中启动它,它会工作,但是对于这个任务,我需要按照我上面所写的方式导入它。因此,我无法做到以下几点:

from numpyClone import Array
Array.arrange(1,10,1)
#or
import numpyClone as np
np.Array.arange(1,10,1)

我已经查询过使用sys库处理这个问题的方法,但我们不允许使用除'math'之外的任何库。此外,我试图实现staticmethod装饰,但无济于事。我会非常感激任何形式的帮助,所以我可以继续编写其余的代码。

1 个答案:

答案 0 :(得分:0)

首先缩进你的函数,这样它们就可以在类中而不是在外面然后剪切文件并将其粘贴到你的python模块上,这些模块的目录应该以.... \ Python \ Python36 \ Lib结尾 那么你可以做到

from numpyClone import *
x = Array([1,2,3])
print(x)
print(x.arange(1,4,0.5))