python – 更新类的实例属性
发布时间:2020-12-20 11:48:51 所属栏目:Python 来源:网络整理
导读:我一直在谷歌搜索这个主题,我没有找到一个普遍接受的方式来实现我的目标. 假设我们有以下课程: 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应该
我一直在谷歌搜索这个主题,我没有找到一个普遍接受的方式来实现我的目标.
假设我们有以下课程: import numpy as np class 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方法更新此类的长度属性吗? 解决方法
不要更新它,只需在
a getter需要时阅读它:
class MyClass: ... @property def length(self): return self.x.size (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |