You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询Python代码中animal.__class__.__name__的作用及工作原理

animal.__class__.__name__ 的作用与工作原理

在你的Zoo类代码中,animal.__class__.__name__ 的核心作用是动态获取传入动物实例所属子类的类名称,最终用于生成清晰的提示文本,明确显示添加到动物园的具体动物种类。

具体工作方式拆解

  • animal: 是传入add_animal方法的具体实例对象,可能是Lion、Tiger(或其他Animal子类)的实例。
  • animal.__class__: 每个Python实例都自带__class__属性,直接指向该实例所属的类对象。比如传入Lion实例时,animal.__class__就是Lion类本身;传入Tiger实例时,就是Tiger类。
  • .__name__: 这是Python类对象的内置属性,存储着类的字符串形式名称(比如Lion类的__name__就是"Lion",Tiger类则是"Tiger")。

结合你的继承场景

因为Lion和Tiger都继承自Animal父类,当你把子类实例传给add_animal方法时,animal.__class__会精准指向子类而非父类,所以__name__能拿到子类的具体名称。这样返回的提示字符串就会是类似"Simba the Lion added to the zoo"的具体描述,而不是笼统的"Simba the Animal added to the zoo",让反馈信息更准确。

举个实际运行的例子:

# 假设Lion类继承自Animal
simba = Lion(name="Simba")
zoo = Zoo("Central Zoo", 1000, 10, 5)
print(zoo.add_animal(simba, 200))
# 输出结果:Simba the Lion added to the zoo

补充说明

你也可以用type(animal).__name__替代animal.__class__.__name__,二者在大多数场景下效果完全一致。type()是Python内置函数,用于返回对象的类型,本质上和直接访问实例的__class__属性是同一个逻辑。

内容的提问来源于stack exchange,提问作者Viktor Petrov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 07:47:07