gpt4 book ai didi

python - 设置属性 python

转载 作者:太空宇宙 更新时间:2023-11-03 18:42:05 25 4
gpt4 key购买 nike

这是我上一个问题的后续问题,即为什么类中方法的 setattr 不起作用,我找到了答案,但现在我遇到了一个小问题

class Test:
def myString(self, var):
Test.myString.string = var
return self.myString

然后我这样做

x = Test()
x.myString("test").string

它返回测试,但然后我尝试这个

y = list()
[y.append(x.myString(str(i))) for i in range(10)]

然后尝试通过执行以下操作来获取列表,[j.string for j in y] ,它返回 9 个总共 9 个数字。他们是否有办法解决此问题,以便附加当前所在的号码?

最佳答案

这真是一个奇怪的设计。我怀疑有一种更自然的方式来完成它想要做的任何事情。

也就是说,发生的事情是您的 myString 方法在类方法本身上设置值。我从您之前的问题( Can you set an attribute to a method in python )中看到,调用绑定(bind)方法每次都会创建绑定(bind)方法的新实例,因此您实际上会从对 myString 方法的连续调用中返回不同的对象,但您总是更新类的未绑定(bind)方法对象上的单个值。一般来说,如果您在类而不是实例上设置数据,那么您就是在为该类的所有实例设置该数据。

我不明白你想在这里做什么。显然,您可以轻松获得 0-9 的字符串表示形式的列表,但显然还需要一些东西。

更自然的设计就是在类实例上设置字符串 - 但它是如此简单和直接,实际上很难演示。

class Test:
pass

x = Test()
x.string = 'one'
print(x.string)

因此,我只能假设您正在寻找更复杂的东西。

关于python - 设置属性 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20308415/

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