gpt4 book ai didi

python - 更新类的实例属性

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:15 24 4
gpt4 key购买 nike

我在谷歌上搜索了很多关于这个主题的内容,但我并没有真正找到实现我的目标的普遍接受的方法。

假设我们有以下类:

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。这也是预期的,因为实例属性 length 是在 A 的实例化期间设置的。现在我不确定更新实例属性的最pythonic方式是什么。例如,我可以再次运行 __init__:

A.__init__(A.x)

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

最佳答案

不要更新它,只需在需要时阅读 a getter :

class MyClass:
...

@property
def length(self):
return self.x.size

关于python - 更新类的实例属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35040893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com