Python中类对象内部的For循环

2024-10-03 23:24:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python创建一个类,并通过for循环(从这些股票生成数据)传递一个列表(simbolList),然而,我似乎还没有弄清楚这背后的逻辑。有什么建议吗

本质上,我希望通过for循环传递符号列表,对于传递的每个符号,检索股票数据并将其保存在字典(data dict)中,但它似乎不起作用

这是密码

class Stocks:
    symbolList = ["AMZN"]
    data = {}

    def __init__(self, symbolList):
        self.symbolList = symbolList
        self.data = data

    def symbol(self):
        for symbol in self.symbolList:
            self.data[symbol] = get_data(symbol)
        print(self.data)
Stocks.symbol() #yields an errors, missing 1 required positional argument self

Tags: 数据self列表fordatadef符号逻辑
1条回答
网友
1楼 · 发布于 2024-10-03 23:24:58

您同时使用类和实例属性;你可能不想那样做。以下是仅使用实例属性的代码:

class Stocks:
    def __init__(self, symbolList):
        self.symbolList = symbolList
        self.data = {}

    def symbol(self):
        for symbol in self.symbolList:
            self.data[symbol] = get_data(symbol)
        print(self.data)

stocks = Stocks(["AMZN"])
stocks.symbol()

请注意,“missingself”错误是因为您试图调用上的实例方法。上面的代码通过创建一个名为stocks的实例来解决这个问题,该实例在调用symbol()方法时提供了self参数

FWIW由于symbol方法实际上是从外部源加载数据,对于所有符号,我可能建议以不同的方式命名它;你也可以通过字典理解来写得更简洁一些

class Stocks:
    def __init__(self, symbolList):
        self.symbolList = symbolList
        self.data = {}

    def load_symbol_data(self):
        self.data = {symbol: get_data(symbol) for symbol in self.symbolList}


stocks = Stocks(["AMZN"])
stocks.load_symbol_data()
print(stocks.data)

相关问题 更多 >