gpt4 book ai didi

python - 将某些属性从一个对象层次结构提取到另一个对象层次结构中的 'Pythonic' 方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 05:59:38 24 4
gpt4 key购买 nike

假设我有这样的复杂类型:

class MyForm(wtforms.Form):
firstname = wtforms.TextAreaField()
lastname = wtforms.TextAreaField()

TextAreaField 可以强制转换为包含 HTML 的 str()。它有一个名为 data 的属性,其中包含原始数据。它还有一个名为 label 的属性,其中包含用于显示标签的 HTML。这就是我想从这个复杂类型中提取的三个值。

创建一个只包含我想要的属性的新对象的 pythonic 方法是什么?

有点像....

f = MyForm()
... populate f ...
x = {}
for k, v in f:
x[k] = {'html1': str(v), 'data': v.data, 'html2': v.label}

我知道错了,求救!

以后,我想说:

print x.firstname.data
print x.firstname.html1
print x.firstname.html2

最佳答案

只写一个适配器类怎么样?

class TAFAdapter(object):
def __init__(self, taf):
self.taf = taf
@property
def data(self): return self.taf.data
@property
def html1(self): return str(self.taf)
@property
def html2(self): return self.taf.label

那么你所要做的就是:

class MyForm(...):
def __init__(self):
self.firstname = TAFAdapter(wtforms.TextAreaField())
...

根据您的需要,您可以让 TAFAdapter 直接实例化 TextAreaField,或者您可以将其通用化以用于其他表单字段,...

关于python - 将某些属性从一个对象层次结构提取到另一个对象层次结构中的 'Pythonic' 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25829264/

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