【问题标题】:Getting information from one class method to another从一个类方法获取信息到另一个类
【发布时间】:2020-01-10 08:09:20
【问题描述】:

我正在尝试创建一堆类方法来读取 .JSON 文件的特定部分,并且无法从一种方法获取信息到另一种方法,在这种特殊情况下,我试图从'read_files' 方法过渡到 'split_to_requests' 方法。我不确定我的错误在哪里,但是在“test_split_requests”测试中运行单元测试失败。我在代码底部添加了测试。

    import json
    import pandas as pd
    from dask import bag

    class WeatherDataConverter:

        def __init__(self, *args, **kwargs):
            super(WeatherDataConverter, self).__init__(*args, **kwargs)
            self.meteo_bag = bag.Bag

        def read_files(self, files):
            dask_bag = bag.read_text(files).map(json.loads)
            return dask_bag

        def split_to_requests(self, dask_bag):
            data_pluck = dask_bag.flatten().pluck('data')
            request_request = data_pluck.pluck('requests')
            return request_request

        @staticmethod
        def flatten(bag):
            print(bag)

/////////////////////////////////////// //////////////////////////////////////////////p>

    from unittest import TestCase
    from weather.WeatherDataConverter import WeatherDataConverter


    class TestWeatherDataConverter(TestCase):

        def __init__(self, *args, **kwargs):
            super(TestWeatherDataConverter, self).__init__(*args, **kwargs)
            self.converter = WeatherDataConverter()

        def test_read_file(self):
            dask_bag = self.converter.read_files('../data/*.json')
            assert dask_bag.count().compute() == 5

        def test_split_requests(self):
            dask_bag = self.converter.read_files('../data/*.json')
            dataframe = dask_bag.split_to_requests()
            print(dataframe)

这是失败代码:

    test_weatherDataConverter.py:35                 
    (TestWeatherDataConverter.test_split_requests)
    self = <tests.weather.test_weatherDataConverter.TestWeatherDataConverter         
    testMethod=test_split_requests>

        def test_split_requests(self):
            dask_bag = self.converter.read_files('../data/*.json')
    >       dataframe = dask_bag.split_to_requests()
    E       AttributeError: 'Bag' object has no attribute 
    'split_to_requests'

    test_weatherDataConverter.py:38: AttributeError

    Assertion failed

【问题讨论】:

  • 您正在尝试调用WeatherDataConverter.flatten,但您的课程WeatherDataConverter 没有方法flatten
  • @Heike 是的,这是错误之一,我会编辑它

标签: python-3.x class methods dask class-method


【解决方案1】:

好吧,我最终自己找到了答案,所以如果有人觉得有更好的方法,请随时对此发表评论,也许这会对任何人有所帮助。

import json
import pandas as pd
from dask import bag

class WeatherDataConverter:

    def __init__(self, *args, **kwargs):
        super(WeatherDataConverter, self).__init__(*args, **kwargs)
        self.meteo_bag = bag.Bag

    def read_files(self, files):
        dask_bag = bag.read_text(files).map(json.loads)
        return dask_bag

    def convert(self, files):
    data = self.read_files(files).flatten().pluck('data')
    return data

    @staticmethod
    def flatten(bag):
        print(bag)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-22
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多