Это хорошо, чтобы изменить тип через __getitem__ перегрузку метода? - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть класс myclass, который по сути является списком data, который представляет время + методы методов для работы с этим списком. Я хотел бы иметь возможность поддерживать операции numpy в стиле data.

Поэтому я подумал о перегрузке оператора __getitem__ следующим образом:

def __getitem__(self,i):
    import numpy as np
    return np.array(self.data)[i]

Это для В примере очень легко справиться с изменением нулевого времени data на первый элемент с помощью:

x = myclass()
print(x[:] - x[0])

Тем не менее, мне это кажется неясным.

Мне интересно: это достаточно приличная практика? Новый дизайн OOP и OOP.

Заранее спасибо.

1 Ответ

0 голосов
/ 18 апреля 2020

Вы можете использовать new , чтобы сделать ваш класс np.array.

import numpy as np
class MyClass:
    def __new__(cls, data):
        return np.array(data)


x = MyClass([1, 2, 3, 4])
print(x[:])
print(x[0])
print(x[:] - x[0])

Это будет

[1 2 3 4]
1
[0 1 2 3]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...