在另一个Python Fi中调用类时出现问题

2024-06-26 14:01:53 发布

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

我试着自学Python,但我遇到了一个问题。我正在运行pydev,如果这影响到什么的话

这是我在一个名为“Stock”的文件中的类:

class Stock(object):
'''
A stock traded on the NASDAQ
'''


def __init__(self, ticker, company, isETF, NASDAQSymbol, price):
    '''
    Returns a stock object with a set ticker, company, ETF flag, NASDAQ Symbol and price
    '''
    self.ticker = ticker
    self.company = company
    self.isETF = isETF
    self.NASDAQSymbol = NASDAQSymbol
    self.price = price

我想在另一个名为“Main”的文件中创建此类的实例:

import urllib.request
from Stock.py import Stock

if __name__ == '__main__':
    with urllib.request.urlopen('ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqtraded.txt') as response:
        html = response.read()
    rawStockList = html.splitlines()

for i in rawStockList:
    stockInfo = i.split('|')
    stock = Stock(stockInfo[1], stockInfo[2], stockInfo[5], stockInfo[10], 0)

我在导入“Unresolved import:Stock”时得到错误。当我注释掉这一行时,我在“stock=stock(…)”行中得到一个错误,它表示“Undefined variable:stock”。作为记录,这两个文件都位于Pydev中的同一文件夹/项目中

我已经做了很多谷歌搜索,并没有遇到一个类似的问题,足以我有一个有用的解决办法。任何指导,指点或帮助将不胜感激


Tags: 文件importselfobjectstockwithurllibprice
1条回答
网友
1楼 · 发布于 2024-06-26 14:01:53

from Stock import Stock-不要将文件名放在from语句中;它改为使用模块名

您还应该缩进if语句,使其与with语句处于相同的缩进级别(除非复制粘贴代码时出现错误):

if __name__ == '__main__':
    with urllib.request.urlopen('ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqtraded.txt') as response:
        html = response.read()
    rawStockList = html.splitlines()

    for i in rawStockList:
        stockInfo = i.split('|')
        stock = Stock(stockInfo[1], stockInfo[2], stockInfo[5], stockInfo[10], 0)

最后,请记住,尽管您在rawStockList上循环,但您仍会覆盖循环中的stock变量。实际上,stock实例将只反映rawStockList中最后一项的数据

如果要为rawStockList中的所有数据创建Stock项,则需要分别保存每个项:

if __name__ == '__main__':
    with urllib.request.urlopen('ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqtraded.txt') as response:
        html = response.read()
    rawStockList = html.splitlines()

    stocks = []  # This is an empty list
    for i in rawStockList:
        stockInfo = i.split('|')
        stock = Stock(stockInfo[1], stockInfo[2], stockInfo[5], stockInfo[10], 0)
        stocks.append(stock)
    print(stocks)

相关问题 更多 >