自定义类的继承

时间:2018-03-20 11:28:37

标签: python netcdf

我有一个非常大的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'

2 个答案:

答案 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,否则你会得到其他错误。