Python 未在visual studio上定义名称

Python 未在visual studio上定义名称,python,Python,我正在使用Visual Studio运行py文件。我是OOP新手,所以调试这个问题很困难。它表示名称“mng”未定义,“Manager”对象没有属性“salary”。我应该如何解决这个问题 class Employee: MIN_SALARY = 30000 def __init__(self, name, salary=MIN_SALARY): self.name = name if self.salary >= Employee.MIN_

我正在使用Visual Studio运行py文件。我是OOP新手,所以调试这个问题很困难。它表示名称“mng”未定义,“Manager”对象没有属性“salary”。我应该如何解决这个问题

class Employee:
    MIN_SALARY = 30000
    def __init__(self, name, salary=MIN_SALARY):
        self.name = name
        if self.salary >= Employee.MIN_SALARY:
            self.salary = Employee.salary
        else:
            self.salary = Employee.MIN_SALARY

    def give_raise(self, amount):
        self.salary += amount

class Manager(Employee):
    def display(self):
        return print("Manager", self.name)

mng = Manager("Debbie Lashko", 86500)
print(mng.name)
mng.display()

>>> mng = Manager("Debbie Lashko", 86500)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in __init__
AttributeError: 'Manager' object has no attribute 'salary'
>>> print(mng.name)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'mng' is not defined
>>> mng.display()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'mng' is not defined
class员工:
最低工资=30000
定义初始工资(自我、姓名、工资=最低工资):
self.name=名称
如果self.salary>=Employee.MIN\u工资:
self.salary=Employee.salary
其他:
self.salary=Employee.MIN\u工资
def加息(自身、金额):
自付工资+=金额
班级经理(员工):
def显示(自):
返回打印(“经理”,self.name)
mng=经理(“Debbie Lashko”,86500)
打印(mng.name)
mng.display()
>>>mng=经理(“Debbie Lashko”,86500)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第5行,在_init中__
AttributeError:“Manager”对象没有属性“salary”
>>>打印(mng.name)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“mng”
>>>mng.display()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“mng”

在使用属性之前,必须为属性分配一些内容。只要稍微改变一下你的逻辑

    def __init__(self, name, salary=MIN_SALARY):
        self.name = name
        self.salary = salary
        if self.salary < Employee.MIN_SALARY:
            self.salary = Employee.MIN_SALARY

这段代码有一些问题。 但是,您的错误可以通过以下方法解决:

class Employee:
    MIN_SALARY = 30000

    def __init__(self, name, salary=MIN_SALARY):
        self.name = name

        if salary >= Employee.MIN_SALARY:

比较前未声明自己的工资。所以,经理还没有自己的薪水。在if语句中只使用
salary
,请发布完整的错误消息,并更正代码示例的缩进。除了这里的缩进问题,您永远不会在构造函数中分配salary。我再次编辑了脚本,但同样的错误…@Mike-将更改为
\uuuu init\uuu
对我有效。它现在对我有效
class Employee:
    MIN_SALARY = 30000

    def __init__(self, name, salary=MIN_SALARY):
        self.name = name

        if salary >= Employee.MIN_SALARY: