gpt4 book ai didi

带有@property的Python对象来听写

转载 作者:行者123 更新时间:2023-11-28 21:15:59 26 4
gpt4 key购买 nike

我是 Python 的新手,所以如果我对一些简单的事情感到困惑,请原谅。

我有一个这样的对象:

class myObject(object):
def __init__(self):
self.attr1 = None
self.attr2 = None

@property
def prop1(self):
return foo.some_func(self.attr1)

然后我像这样实例化它:

a = myObject()
a.attr1 = 'Apple'
a.attr2 = 'Banana'

它全部包含的方法需要返回 dict,所以我这样做:

return a.__dict__

prop1 不包含在返回值中。我明白这是为什么,它不在对象的 __dict__ 中,因为它只包含真实属性。

所以问题是,我怎样才能返回,返回这样的东西:

{'attr1': 'Apple', 'attr2': 'Banana', 'prop1': 'ModifiedApple'}

除了返回之前做的事情:

a.prop1_1 = a.prop1

最佳答案

你应该保留 __dict__,只将它用于直接存在于实例上的属性。

如果您需要生成一个包含属性名称和值的字典,您可以添加另一个属性或方法来生成一个新的字典:

@property
def all_attributes(self):
return dict(vars(self), prop1=self.prop1)

这可以通过内省(introspection)来自动检测所有属性对象,但要考虑到您使用属性可以避免首先进行预先计算;触发所有属性的计算可能不是那么令人满意。

关于带有@property的Python对象来听写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29393379/

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