是否可以通过调用返回其超类实例的函数来初始化Python子类?

时间:2017-04-24 23:25:19

标签: python class numpy initialization

我尝试创建一个继承numpy.ndarray的类,但我想使用返回ndarray的函数对其进行初始化。具体来说,我想使用方便的ndarray函数从CSV文件生成numpy.genfromtxt()。例如(我知道这段代码不能达到我想要的效果):

class MyClass(numpy.ndarray):
    def __init__(self, other_parameter):
        self = numpy.genfromtxt(filename, delimiter=',')
        self.other_param = other_parameter

关键是我希望通过添加其他功能/属性来扩展ndarray,而不会丢失ndarray的接口。我知道我可以在一个类中拼凑属性,其中一个是ndarray。是否可以使用不是__init__()的构造函数(在我的类定义super().__init__()内)进行扩展?

我已经为其他几种语言找到了这种类型的东西的答案,但不是Python。我之前想要使用类似的init函数,但从未找到过如何做到这一点。

1 个答案:

答案 0 :(得分:0)

对于上述评论,此答案的信用额主要属于juanpa.arrivillaga。答案是this section of the link。来自whole doc page的其他信息有助于充分理解它。

简短的回答是,在自定义类定义中使用__new__()构造函数(我还不知道的标准Python)和“视图转换”,这是特殊的ndarray功能