像__getattribute __()这样的重定向方法调用?

时间:2020-06-07 20:46:37

标签: python redirect methods subclass

我正在尝试继承numpy.ndarray,但需要在方法中调整数组的大小,但到目前为止没有答案:

Resize inherited ndarray, inside a method?

那么我的问题是如何将方法重定向到本地对象。 对于属性,您可以使用 __ getattribute __ __ getattr __ 是否有类似的方法选项?

类似这样的东西:

SetProperty

1 个答案:

答案 0 :(得分:0)

您不仅可以继承numpy.array吗?

class Blah(numpy.array):
    def __init__(self, *args, **kwargs):
        numpy.array.__init__(self, *args, **kwargs)
        ....

    def resize(self, ...):
        ....

作为有时可能更方便的黑客手段,您可以选择替代

class Blah:
    ...
    def __getattr__(self, name):
        return getattr(self.obj, name)

但这通常是您以后会后悔的事情:-}。

编辑:回到第一种(更好的方式):您可以就地调整大小。看到这里:https://numpy.org/doc/stable/reference/generated/numpy.ndarray.resize.html#numpy.ndarray.resize