为了账号安全,请及时绑定邮箱和手机立即绑定

如何(自动)区分 Opus 和 Score 对象?

如何(自动)区分 Opus 和 Score 对象?

撒科打诨 2021-10-12 16:21:39
我正在使用 1850 O'Neills Folksong 语料库,因为它来自 music21 语料库。我需要遍历所有歌曲。我尝试使用以下代码songs = corpus.getComposer('oneills1850')for ruta in songs:    op = converter.parse(ruta)    numbers = op.getNumbers()...然后迭代数字。在大多数情况下,每个op变量都是一个 Opus 对象,并且它的每个数字都与一个 Score 相关联。问题是这并不总是正确的。例如,第 15 个元素songs(即索引 14)本身就是一个 Score 对象,而不是 Opus。所以我的代码在尝试使用 getNumbers 时崩溃了。我想,解决方案应该事先检查op是 Opus(在这种情况下使用 getNumbers 就像我之前所做的那样)还是 Score(在这种情况下跳过第二次迭代部分)。但我找不到如何做到这一点,或任何其他解决我问题的方法。
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

如果在调用对象的方法之前必须确定对象的类型,请使用isinstance

if isinstance(op,Opus):


查看完整回答
反对 回复 2021-10-12
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信