python - 通过 __getitem__ 方法重载更改类型是否很好?
问题描述
我有一个类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 设计的新手。
先感谢您。
解决方案
您可以使用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]
推荐阅读
- asp.net - 将旧的 VB.NET 项目从 VS2013 迁移到 VS2017
- android-studio - Android Studio 损坏的 .studio 而不是 classes 显示难以理解的部分 – xml
- jekyll - Jekyll 忽略第二个配置文件
- ios - Xcode 11 beta 5 - 不支持的 Xcode 错误
- java - Android 9.0 wifi热点API
- javascript - 渲染既不是由 setState() 也不是 forceUpdate() 触发
- google-bigquery - 如何使用从 Google Cloud Projects 导出到 BigQuery 的 Stack Driver 日志
- ssh - GitLab CI 中的 SSH 主机密钥验证失败
- selenium - 如何使用 Robot Framework 中的窗口对话框上传文件?
- android - 如何使用 Kotlin 从 Firebase 获取数据?