擅长:python、mysql、java
<p>我同意Alex描述的角色解决方案。你所拥有的并不是不同的人的子类。一个人可以扮演不同的角色。在</p>
<p>但是我听到你说:“嘿,忍者可以有一个属性“numberOfStars”,而歌手可以有一个属性“highestNote”。与接口相同:忍者可以使用throwStar()和execase()方法,而歌手可以使用sing()和getWasted(),贝司手可以使用goFunky()和slapPop()</p>
<p>这里的情况是,您的数据模型需要一个非常松散的模式。太松散了,事实上,你根本没有模式。如果歌手决定用低音和即兴曲,那没关系。如果他想扮演一个忍者,你叫它throwStar,它会返回一个错误,因为他没有星星,但原则上你可以给一个歌手分配星星,让他扔星星。在</p>
<p>你所要冒险的是本体论的世界,而不是模式。你有一个资源,它是“something”,这个something可以是某种类型,有一些属性等等。一些属性的存在可以推断类型,或者某个类型的存在可以推断其他类型。您不能用简单的django数据模型轻松地描述这些信息。你需要的是一个上下文感知的推断图存储,比如AllegroGraph,或者使用rdflib实现你的破解方案。在</p>