Python 3.x 跨文件导入自定义类创建类对象的实现
跨文件导入类的问题排查与修正
现存代码的核心问题
- 导入逻辑匹配错误:Python同项目下跨文件导入时,导入对象是文件名对应的模块,而非文件内定义的类名。现有main.py中
import Person as P的写法,会让Python查找名为Person.py的模块文件,但实际项目中的模块文件是小写命名的person.py,运行时会直接抛出ModuleNotFoundError。 - 类方法变量作用域错误:person.py中的
welcome()方法直接引用了未定义的name变量,实例的姓名参数是存储在实例属性self.name上的,直接写name会触发NameError,无法正常取值打印。 - 执行入口缺失:main.py中虽然定义了
main()函数,但没有添加脚本运行入口判断,直接运行文件时函数不会被自动触发,无任何输出。
修正后的可运行代码
person.py(修正后)
class Person(): def __init__(self, name): self.name = name def welcome(self): # 修正:引用实例绑定的name属性 print("welcome", self.name)
main.py(修正后)
# 修正:导入对应文件名的person模块,匹配原代码的别名命名习惯 import person as P def main(): p1 = P.Person("Marshall") p2 = P.Person("Jhon") p1.welcome() p2.welcome() # 修正:添加脚本执行入口,确保main函数被自动调用 if __name__ == "__main__": main()
运行效果
执行main.py后,控制台会输出:
welcome Marshall welcome Jhon
内容的提问来源于stack exchange,提问作者FJGJFOR
相关产品推荐
相关产品推荐

