繁体   English   中英

使用Main()在函数之间传递数据

[英]Passing data between functions, using Main()

我试图在一个类中将数据从一个函数传递到另一个函数并将其打印出来。 我不成功,并不断出错。 错误底部,以寻求帮助。 提前致谢。

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'

函数定义包括参数列表,这些参数必须与调用函数时传递的参数匹配。

因此,如果将Main定义为采用Get_Data参数, Get_Data每次调用它时,都必须传递一个参数作为Get_Data的值。

但是您根本没有传递任何东西,因此没有传递TypeError


由于Main希望Get_Data带任何参数地调用其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)

错误非常明显:您声明Main具有参数Get_Data (忽略所有类成员隐式拥有/传递的self指针)。 当您调用z.Main()您没有传递该参数,因此解释器要求您填补这一空白。

您可能的意思是:

def Main(self):
    x = Stocks(self.Get_Data())
    print(x)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM