首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中,您能改变类1中的方法如何从类2中对类2起作用吗?

在Python中,您能改变类1中的方法如何从类2中对类2起作用吗?
EN

Stack Overflow用户
提问于 2015-09-17 22:16:59
回答 2查看 74关注 0票数 0

基本上,我有一个子类ndarray和其他信息。当我对我的对象调用np.asarray()时,它只返回numpy数组并破坏我的附加信息。

那么,我的问题是: Python中是否有一种方法可以从子类中改变np.asarray()对ndarray子类的作用方式?当然,我不想改变numpy,我也不想遍历每个调用np.asarray()来处理这个问题的实例。

提前感谢!

克里斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-17 23:04:27

简短回答:不。例如,Numpy的asarray()不检查其参数类上是否存在特殊方法,因此没有提供一种覆盖其行为的方法。

长答案:子类是不可能的,但是您可以在模块级代码中对numpy模块进行热补,用自己的包装器替换asarray函数。这是一个非常麻烦的解决方案,我不推荐它,但它可能对你有用。

代码语言:javascript
复制
_real_asarray = np.asarray
def _new_asarray(a, dtype=None, order=None):
  if isinstance(a, MyClass):
    # special handling here
  else:
    return _real_asarray(a, dtype, order)
np.asarray = _new_asarray
票数 1
EN

Stack Overflow用户

发布于 2015-09-17 22:48:54

不是的。numpy的asarray()被编码为实例化一个常规的numpy数组,如果不编辑asarray()或更改调用者的代码来调用您的特殊方法而不是asarray(),您就不能更改它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32640830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档