Python 如何(自动)区分作品和评分对象?

Python 如何(自动)区分作品和评分对象?,python,music21,Python,Music21,我正在使用1850年奥尼尔民歌语料库,因为它来自音乐21语料库。我需要重复所有的歌曲 我尝试使用以下代码 songs = corpus.getComposer('oneills1850') for ruta in songs: op = converter.parse(ruta) numbers = op.getNumbers() …然后对数字进行迭代。在大多数情况下,每个op变量都是Opus对象,其每个数字都与一个分数相关联 问题是这并不总是正确的。例如,歌曲(即索引14)的

我正在使用1850年奥尼尔民歌语料库,因为它来自音乐21语料库。我需要重复所有的歌曲

我尝试使用以下代码

songs = corpus.getComposer('oneills1850')
for ruta in songs:
    op = converter.parse(ruta)
    numbers = op.getNumbers()
…然后对数字进行迭代。在大多数情况下,每个
op
变量都是Opus对象,其每个数字都与一个分数相关联

问题是这并不总是正确的。例如,
歌曲
(即索引14)的第15个元素本身就是一个乐谱对象,而不是作品。因此,我的代码在尝试使用getNumbers时崩溃


我想,解决方案应该事先检查
op
是一部作品(在这种情况下,使用getNumbers,就像我以前做的那样)还是一个分数(在这种情况下,跳过第二个迭代部分)。但是我找不到如何做,也找不到任何其他方法来解决我的问题。

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

if isinstance(op,Opus):