擅长:python、mysql、java
<p>您可以为<code>Pet</code>编写<code>__init__()</code>以接受<code>Animal</code>的实例(或者实际上,任何具有必要属性的ojbect——duck typing!)以及个人属性。然后你就可以做<code>fluffy_as_pet = Pet(fluffy_as_animal)</code>。或者提供一个类方法(例如<code>Pet.from_object()</code>)来执行相同的操作,如果您不想重载<code>__init__()</code>。即使您不控制<code>Animal</code>和<code>Pet</code>类,您也可以根据需要为它们创建自己的子类。在</p>
<p>但是,最好是更进一步,不要编写接受<code>Animal</code>而不是{<cd2>}的代码。那你就不必转换了。同样,duck类型——如果一个对象具有正确的属性,则可以使用它而不管它的类型是什么。在</p>