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

Python导入类报错ImportError: cannot import name Person如何解决

错误原因
  • 核心原因是自定义文件与Python标准库模块重名:abc是Python内置的官方标准库模块(用于实现抽象基类能力),执行from abc import Person时,解释器默认优先加载内置的abc模块,该模块中没有Person类,因此触发导入报错。
  • 额外存在两处代码逻辑错误,解决导入问题后也会触发报错:
    1. on_honor_roll方法的缩进错误,定义在了Person类外部,不属于类的成员方法,实例调用时会抛出属性不存在的错误。
    2. 实例化Person时传入的gpa参数为字符串类型,无法直接与数值3.5做大小比较。
解决步骤
  1. 重命名你自定义的abc.py文件,改为不与标准库重名的名称,例如person.py,同时删除同目录下生成的__pycache__缓存文件夹,避免旧缓存影响导入。
  2. 修正person.py的代码,调整方法缩进,同时增加gpa的类型转换逻辑:
class Person: 
    def __init__ (self, age, weight, height, first_name, last_name, gpa ):
        self.age = age
        self.weight = weight
        self.height = height
        self.first_name = first_name
        self.last_name = last_name
        # 将gpa转为浮点数用于后续数值比较
        self.gpa = float(gpa) 

    # 缩进调整到类内部,成为实例方法
    def on_honor_roll(self):
        if self.gpa >= 3.5:
            return True
        else:
            return False
  1. 修改object_functions.py的导入语句,对应修改后的文件名:
from person import Person
  1. 调整实例化Person时的gpa参数为合法数值,例如:
user1 = Person(25, 80, 178, "John", "Williams", 3.8) 
user2 = Person(15, 78, 190, "Joe", "James", 3.2)

内容的提问来源于stack exchange,提问作者Álvaro Lagoa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:45:03