回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个内容块“实例”列表,当列表被处理时,每个块的内容都是在内容类型类的实例中生成的(如果这有意义的话)。在</p>
<p>当我在列表中迭代时,我试图设置modules实例的属性,并使用来自extra_modules的命名模块实例的输出来设置modules实例的属性。如果有更好的方法来写这个问题,请随时编辑。在</p>
<p>下面是我尝试使用Python瓶子框架运行的测试代码的一个示例。我试图在实际将内容生成代码放入photoGallery类之前获得一个测试输出。在</p>
<p>在核心.py公司名称:</p>
<pre><code>import extra_modules
module_blocks_in_db = [
# module-ID, module-sys-name, module-sys-desc, module-function, module-variables
[1, 'photo_gallery_main', 'A little intro gallery', 'photoGallery', '{"images": ["photo1.jpg", "photo2.jpg", "photo3.jpg"]}'],
]
class moduleBlocks:
def __init__(self, mbidb):
for i in mbidb:
setattr(self, i[1], getattr(extra_modules, i[3])(i[4]))
@route('/')
def home():
page_id = 1
modules = moduleBlocks(module_blocks_in_db)
return modules.photo_gallery_main
</code></pre>
<p>额外的_模块.py公司名称:</p>
^{pr2}$
<p>这是我从瓶子的开发服务器得到的错误:</p>
<pre><code>File "core.py", line 46, in __init__
setattr(self, i[1], getattr(extra_modules, i[3])(i[4]))
TypeError: __init__() should return None
</code></pre>
<p>我真的没有很好地理解这个错误,我看的代码越多,我就越困惑自己。我已经尝试了几种不同的方法从类实例获取输出并将其作为我的示例中的moduleBlocks类的属性。我在这方面出了什么问题?在</p>
<p>编辑:我现在把setattr行改为两行,去掉了extra_modules photoGallery类中的返回输出,现在一切正常,谢谢:</p>
<pre><code>x = getattr(extra_modules, i[3])(i[4])
setattr(self, i[1], x.output)
</code></pre>