无法在函数中使用cls调用字典数据类属性,但是如果我使用类名可以

问题描述

我正在尝试运行以下代码,并遇到一些奇怪的错误...想知道是否有人可以提供帮助!

import Feedparser
from dataclasses import dataclass,field
from typing import Dict


@dataclass
class NewsParser:
    shipping_news: str = "shippingurlgoeshere"
    all_shipping_news: Dict = field(default_factory=lambda: {
        'shipping news': "shippingurlgoeshere"
    })

    @classmethod
    def parse_Feed(cls):
        """
        Parses a news Feed for relevant @R_333_4045@ion.
        :return: relevant_items_as_dictionary,dictionary (unsurprisingly) which contains lists of the relevant items.
        """

        # Get articles from Feed

        content = Feedparser.parse(cls.all_shipping_news["shipping news"])
        articles = content.entries

        # Parse Feed

        titles = [x.title for x in articles]
        urls = [x.link for x in articles]
        pub_date_string = [x.published for x in articles]
        pub_date_tuple = [x.published_parsed for x in articles]
        html_summaries = [x.summary for x in articles]

        relevant_items_as_dictionary = {"titles": titles,"urls": urls,"pub_date_string": pub_date_string,"pub_date_tuple": pub_date_tuple,"html_summaries": html_summaries}

        return relevant_items_as_dictionary


NewsParser.parse_Feed()

这给我一个错误AttributeError:类型对象'NewsParser'没有属性'all_shipping_news'

但是如果我注释掉NewsParser.parse_Feed()并在实例化后仅打印NewsParser,我会得到正确的结果:

NewsParser(shipping_news ='shippingurlgoeshere',all_shipping_news = {'shipping news':'shippingurlgoeshere'})

但是,如果我写的不是cls.all_shipping_news,而是写NewsParser.all_shipping_news

最后一个难题...如果在parse_Feed方法中我写了cls.shipping_news,那么它可以完美地访问shipping_news字符串,但是如上所述,当我写cls.all_shipping_news时不会发生这种情况>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)