python – 更新类的实例属性

python – 更新类的实例属性,第1张

概述我一直在谷歌搜索这个主题,我没有找到一个普遍接受的方式来实现我的目标. 假设我们有以下课程: import numpy as npclass MyClass: def __init__(self, x): self.x = x self.length = x.size def append(self, data): self.x 我一直在谷歌搜索这个主题,我没有找到一个普遍接受的方式来实现我的目标.

假设我们有以下课程:

import numpy as npclass MyClass:    def __init__(self,x):        self.x = x        self.length = x.size    def append(self,data):        self.x = np.append(self.x,data)

和x应该是一个numpy数组!如果我跑

A = MyClass(x=np.arange(10))print(A.x)print(A.length)

我明白了

[0 1 2 3 4 5 6 7 8 9]和10.到目前为止一切顺利.但是如果我使用append方法

A.append(np.arange(5))

我得到[0 1 2 3 4 5 6 7 8 9 0 1 2 3 4]和10.这也是预期的,因为实例属性长度是在实例化A期间设置的.现在我不确定什么是最pythonic的方式更新实例属性是.例如,我可以再次运行__init__:

A.__init__(A.x)

然后长度属性将具有正确的值,但在其他一些帖子中,我发现这有点不受欢迎.另一个解决方案是直接更新append方法中的length属性,但我有点想避免这种情况,因为我不想忘记在某个时候更新属性.有更多pythonic方法更新此类的长度属性吗?

解决方法@H_419_40@ 不要更新它,只需在 a getter需要时阅读它:

class MyClass:    ...    @property    def length(self):        return self.x.size
总结

以上是内存溢出为你收集整理的python – 更新类的实例属性全部内容,希望文章能够帮你解决python – 更新类的实例属性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193513.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存