我有一个非常大的NetCDF4格式的数据集。通常我会读取我需要的变量并将它们作为属性传递给我的自定义类,这样我就可以创建新的后期处理方法。由于此数据集非常大,因此它不是一个选项,因为它会引发内存错误。所以我想扩展NetCDF4数据集的属性。以下代码说明了我尝试做的事情:
import netCDF4
class output(NetCDF4.Dataset):
def __init__(self, path):
super(NetCDF4.Dataset, self).__init__(path)
print(self.variables) # Prints successfully
def my_new_method(self):
print(self.variables) # AttributeError: 'output' object has no attribute 'variables'
答案 0 :(得分:1)
您的super()
语法不正确。考虑
class output(netCDF4.Dataset):
def __init__(self, path):
super(output, self).__init__(path)
print(self.variables)
def my_new_method(self):
print(self.variables)
之前已经讨论过Python中super()
的基本语法(参见链接的post)
根据这个定义,我可以输入
my_output=output("myhdf.hdf")
my_output.my_new_method()
两个命令都输出变量列表。
答案 1 :(得分:0)
NetCDF4开发人员进一步帮助了我,这是实际的方法:
import netCDF4
class output(netCDF4.Dataset):
def __init__(self, *args, **kwargs):
super(output, self).__init__(*args, **kwargs)
def my_new_method(self):
print(self.variables)
正如Dmitri Chubarov所指出的那样(见接受的答案)超级语法不正确,但也需要传递* args和** kwargs,否则你会得到其他错误。