擅长:python、mysql、java
<p>除了本例中使用<code>type.__subclasses__()</code>的明显解决方案外,您还可以使用decorator来解决类似的问题:</p>
<pre><code>class Monster(object):
monsters = list()
def isMonster(cls):
Monster.monsters.append(cls)
return cls
@isMonster
class Lochness(Monster):
pass
@isMonster
class Yeti(Monster):
pass
print(Monster.monsters) # [<class '__main__.Lochness'>, <class '__main__.Yeti'>]
</code></pre>