Jupyter运行正常但VS中出现AttributeError/NameError问题求助
问题:Python类代码在Jupyter正常运行但VS中报错
一、带涨薪方法的Employee类问题
代码
class Employee(): def __init__ (self,first_name,last_name,pay): self.first_name = first_name self.last_name = last_name self.pay = pay self.email = first_name + "." + last_name + "@company.com" def fullname(self): return f"{self.first_name} {self.last_name}" def apply_raise(self): self.pay = int(self.pay*1.04) employee_1.pay = 50000 print (employee_1.pay) employee_1.apply_raise() print (employee_1.pay)
Jupyter输出
50000 52000
VS报错
>>> employee_1.apply_raise() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Employee' object has no attribute 'apply_raise' >>> print (employee_1.pay) 50000
二、直接定义员工属性的问题
代码
Employee_1.first_name = "John" Employee_1.last_name = "Doe" Employee_1.email = "john.doe@company.com" Employee_1.pay = 50000 Employee_2.first_name = "Test" Employee_2.last_name = "User" Employee_2.email = "test.user@company.com" Employee_2.pay = 60000 print(Employee_1.email) print(Employee_2.email)
Jupyter输出
john.doe@company.com test.user@company.com
VS报错
NameError: name 'Employee_1' is not defined >>> print(Employee_2.email) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'Employee_2' is not defined
解决方法
第一个问题的核心原因:代码中未创建
employee_1实例就直接调用属性和方法。Jupyter可能在之前单元格已创建过该实例,而VS从头执行脚本,无实例导致报错;同时若VS中未重新执行类定义代码,会使用旧版本类(缺少apply_raise方法)。
修正代码:# 先创建Employee实例 employee_1 = Employee("John", "Doe", 50000) employee_1.apply_raise() print(employee_1.pay)确保在VS中先执行类定义代码,再执行实例操作。
第二个问题的核心原因:
Employee_1和Employee_2是未定义变量,直接赋值属性自然报错。Jupyter可能之前已定义过这两个变量。
修正代码:# 方式1:通过构造方法创建实例 Employee_1 = Employee("John", "Doe", 50000) Employee_2 = Employee("Test", "User", 60000) # 方式2:若要手动赋值属性,需先修改__init__为带默认参数,再创建空实例 class Employee(): def __init__ (self,first_name="",last_name="",pay=0): self.first_name = first_name self.last_name = last_name self.pay = pay self.email = first_name + "." + last_name + "@company.com" Employee_1 = Employee() Employee_1.first_name = "John" Employee_1.last_name = "Doe" Employee_1.email = "john.doe@company.com" Employee_1.pay = 50000VS运行注意事项:VS运行Python脚本是一次性执行整个文件,需确保代码逻辑完整——先定义类,再创建实例,最后执行操作。若用交互式窗口,需按顺序执行代码块,不可跳过类定义步骤。
内容的提问来源于stack exchange,提问作者Ricardo
相关产品推荐
相关产品推荐

