如何解决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 举报,一经查实,本站将立刻删除。