gpt4 book ai didi

python - 动态更改 Python 类属性

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:44 26 4
gpt4 key购买 nike

我有一个类 B 继承了类 A,类属性为 cls_attr。我想在 B 类中动态设置 cls_attr。类似的东西:

class A():
cls_attr= 'value'

class B(A):

def get_cls_val(self):
if xxx:
return cls_attr = 'this_value'
return cls_attr = 'that_value'
cls_attr = get_cls_val()

我尝试了几件事。我知道我可能没有找对地方,但我没有解决方案。

编辑:类是 django 管理类

谢谢。

最佳答案

类属性可以在类或实例上读取,但您只能在类上设置它们(尝试在实例上设置它们只会创建一个实例属性,该属性将隐藏类属性)。

如果条件在导入时是已知的,你可以在 class 主体中测试它:

xxx = True 

class A(object):
cls_attr = 'value'

class B(A):
if xxx:
cls_attr = 'this_value'
else
cls_attr = 'that_value'

现在如果你想在程序执行期间改变它,你要么必须使用classmethod:

class B(A):
@classmethod
def set_cls_attr(cls, xxx):
if xxx:
cls.cls_attr = 'this_value'
else:
cls.cls_attr = 'that_value'

或者如果您需要在测试期间访问您的实例:

class B(A):
def set_cls_attr(self, xxx):
cls = type(self)
if xxx:
cls.cls_attr = 'this_value'
else:
cls.cls_attr = 'that_value'

关于python - 动态更改 Python 类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30735987/

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