gpt4 book ai didi

python - 从类内部分配类变量动态值

转载 作者:行者123 更新时间:2023-12-01 05:58:05 26 4
gpt4 key购买 nike

我正在尝试从类内部动态为类变量分配一个值。

class Test:
dynamic_value = get_dynamic_value()

我相信get_dynamic_value()应该属于Test类。有没有办法让 Test 包含此方法?

现在我正在使用并且它正在工作

def get_dynamic_value():
return 'my dynamic value'

class Test:
dynamic_value = get_dynamic_value()

我希望 Test 包含此方法,因此我尝试将其设为 @classmethod@staticmethod 并通过

调用它
class Test:
dynamic_value = Test.get_dynamic_value()

@staticmethod
def get_dynamic_value():
return 'dynamic'

但是当使用静态方法尝试时,我收到了

AttributeError:类 Test 没有属性“get_dynamic_value”

有什么办法可以做到这一点吗?或者有更好的方法来处理这个问题吗?

最佳答案

类套件从上到下评估,并且您定义的类在评估整个套件之后才存在。

您可以将函数定义放在类体内,但必须在定义之后而不是之前调用它。所以,这会起作用:

class Test:

def get_dynamic_value():
return 'dynamic'

dynamic_value = get_dynamic_value()

没有必要将函数标记为静态方法;它根本不用作方法,只是在类套件中评估期间调用的函数。如果您不希望该函数在定义类后可用(因为它不是方法),您可以将其删除。

class Test:

def get_dynamic_value():
return 'dynamic'

dynamic_value = get_dynamic_value()
del get_dynamic_value

如果该值确实应该动态计算,那么每次您请求它时(以便它能够从访问更改为访问),那么您应该使用属性。

class Test:

@property
def dynamic_value(self):
return 'dynamic'

只有在类实例上访问时才会对其求值,但属性对象本身将存在于类中。

关于python - 从类内部分配类变量动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11600716/

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