gpt4 book ai didi

python - 更改 Python 类变量值

转载 作者:行者123 更新时间:2023-12-01 09:32:48 24 4
gpt4 key购买 nike

我对 Python 非常陌生(来自 JavaScript),并且正在努力理解如何更改类变量的值。我想做的就是更改年龄值,然后显示新的 msg。但是当我添加 Tester.age = 20 时,它不会改变我的 msg 输出。我的 msg 输出仍然使用 age = 10

如何从外部更改类变量?

class ClassTester:
age = 10
seconds = age * 365 * 24 * 60 * 60
msg = "You have lived for " + str(seconds) + " seconds."

Tester = ClassTester()

Tester.age = 20
print(Tester.msg)

最佳答案

我建议使用属性,这样你的界面就不会改变。

class ClassTester:
def __init__(self):
self._age = 10
self._msg = "You have lived for {} seconds."
self._secs = self._seconds(self._age)


@staticmethod
def _seconds(age):
return age * 365 * 24 * 60 * 60


@property
def age(self):
return self._age


@age.setter
def age(self, v):
self._age = v
self._secs = self._seconds(v)


@property
def msg(self):
return self._msg.format(self._secs)

Tester = ClassTester()

print(Tester.msg) # You have lived for 315360000 seconds.
Tester.age = 20
print(Tester.msg) # You have lived for 630720000 seconds.

编辑:我添加了一个静态方法来重新计算秒值,并从 __init__ 和年龄 setter 中调用该方法,以根据 OP 对另一个答案的评论中的关注点来减少重新计算

关于python - 更改 Python 类变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49812261/

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