我正在尝试将数据从一个函数传递到另一个函数,并在一个类中进行打印。我不成功,并不断出错。错误底部,以寻求帮助。预先感谢。
class Stocks(object):
def __init__(self, name):
self.name = name
print(name)
def Get_Data(self):
#self.data2 = data2
#print(self.name)
data2 = web.get_data_yahoo(self.name,data_source='yahoo',start=start_date,end=end_date)['Adj Close']
#print(data2)
#data2.plot(figsize=(10,5))
#plt.show()
return data2
def Main(self, Get_Data):
x = Stocks(Get_Data())
print(x)
#data2.plot(figsize=(10,5))
#plt.show()
z = Stocks('GE')
z.Get_Data()
z.Main()
error:
TypeError: Main() missing 1 required positional argument: 'Get_Data'
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-162-91f08c3bdb57> in <module>()
32 z = Stocks('GE')
33 z.Get_Data()
---> 34 z.Main()
TypeError: Main() missing 1 required positional argument: 'Get_Data'
答案 0 :(得分:0)
函数定义包括参数列表,这些参数必须与调用该函数时传递的参数匹配。
因此,如果您定义Main
来接受Get_Data
参数,则每次调用时都必须传递一个参数作为Get_Data
的值。
但是您什么都没传递,因此TypeError
。
由于Main
希望不带任何参数地调用其Get_Data
,因此它必须是没有参数的可调用对象。绑定方法z.Get_Data
符合要求,因此您可以做到这一点:
z.Main(z.Get_Data)
但这是一个很奇怪的设计。
更有可能的是,您不想首先添加这样的参数:
def Main(self):
…因为您希望Main
要做的是自己呼叫Get_Data
,而不是呼叫者传入的任意内容:
x = Stocks(self.Get_Data())
print(x)
除了您可能不想在这里构造新的Stocks
值(以z.Get_Data()
作为结果的名称之外,您只想使用z.Get_Data()
的结果。所以:
x = self.Get_Data()
print(x)
答案 1 :(得分:0)
错误非常明显:您声明Main
有一个参数Get_Data
(忽略了所有类成员隐式拥有/传递的self
指针)。当您调用z.Main()
时,您没有传递该参数,因此解释器会要求您填补此空白。
您的意思可能是这样的:
def Main(self):
x = Stocks(self.Get_Data())
print(x)