重定向方法调用,如__getattribute __()?

问题描述 投票:0回答:1

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

Resize inherited ndarray, inside a method?

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

类似这样的东西:

class Blah():

   def __init__(...):
       ......
       self.obj = np.zeros(...)

  def __get_method__(self, method):
      return self.obj.method() ????
python redirect methods subclass
1个回答
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)

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

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

© www.soinside.com 2019 - 2024. All rights reserved.