Python 中的 NetCDF4 和多重继承

问题描述

我正在尝试编写一个继承自 netCDF4.Dataset 的类和另一个允许向前者添加功能的抽象类。不幸的是,当我尝试通过我的这个新类打开一个实际的 netcdf 文件时,我收到错误NetCDF: Write to read only”(在 self.filename = filename__init__ 中的第 Meteo 行) :

import abc
from netCDF4 import Dataset

filename = 'data.nc'

class Meteo(abc.ABC):

    def __init__(self,filename):
        self.filename = filename

    @abc.abstractmethod
    def get_pressure(self):
        pass

class Meteodata(Meteo,Dataset):

    def __init__(self,filename:str,mode:str):
        Dataset.__init__(self,filename,mode)
        Meteo.__init__(self,filename)

    def get_pressure(self):
        return 1025.

with Meteodata(filename,'r') as md:
    print(md.get_pressure())

我知道代码想要将新属性 self.filename 写入 Dataset 对象,该对象仅在“read”模式下打开,从而引发异常。尽管如此,我认为这些修改 (self.filename = filename) 只发生在另一个类中。我也许可以不在 Meteo 类中定义属性,而只继续使用方法,但它会有所帮助。

这是我第一次尝试这样的事情,所以我已经阅读了一些关于 Python 中的多重继承(例如 MRO),但据我所知,它似乎不是这样的(至少据我了解...)

感谢您的帮助。

PS:我想这样做的原因如下:我目前正在使用某种类型的 netCDF 格式 (WRF-ARW) 的气象数据,我正在编写后处理函数来对其进行计算.这些计算只需要访问 Meteo 抽象类中定义的数据,但我仍然希望在处理它时能够访问整个文件(因此是多重继承)。最终,我想将来自任何其他模型的任何类型的气象数据输入到这些计算中,当然这些数据很可能以其他格式存储。我只需要为它编写正确的实现,例如 Meteodata2(Meteo,h5py.File) 如果该新模型的输出数据格式恰好是 HDF5 文件

解决方法

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...