简体   繁体   English

NameError:全局名称未在MyClass.py中定义

[英]NameError: global name is not defined in MyClass.py

I am running an example in a Python book for classes. 我正在Python书中为类运行示例。

MyClass.py MyClass.py

class MyClass:
    def __init__(self, Name="Sam", Age=32):
        self.Name = Name
        self.Age = Age

    def GetName(self):
        return self.Name

    def SetName(self, Name):
        self.Name = Name

    def GetAge(self):
        return self.Age

    def SetAge(self, Age):
        self.Age = Age

    def __str__(self):
        return "{0} is aged {1}.".format(self.Name, self.Age)

MyClassTest.py MyClassTest.py

import MyClass

SamsRecord = MyClass.MyClass()
AmysRecord = MyClass.MyClass("Amy", 44)

print(SamsRecord.GetAge())
SamsRecord.SetAge(33)

print(AmysRecord.GetName())
AmysRecord.SetName("Aimee")

print(SamsRecord)
print(AmysRecord)

When I run MyClassTest.py, I got the following error: 当我运行MyClassTest.py时,出现以下错误:


Traceback (most recent call last): File "MyClassTest.py", line 3, in <module>
SamsRecord = MyClass.MyClass() File "MyClass.py", line 3, in __init__ self.Name = Name
NameError: global name 'Name' is not defined

Any suggests on how to fix the error? 任何建议如何解决该错误?

def __init__(self, name="Sam", Age=32):
    self.Name = Name
    self.Age = Age

typing error, you are trying to set self.Name to Name but in the parameters you called it name instead of Name so try this: 键入错误,您尝试将self.Name设置为Name,但是在参数中将其称为name而不是Name,所以请尝试以下操作:

def __init__(self, Name="Sam", Age=32):
    self.Name = Name
    self.Age = Age

You need to change self.Name = Name to self.Name = name because the pamameter is name and not Name . 您需要将self.Name = Name更改为self.Name = name因为参数是name而不是Name Moreover, in this declaration def SetAge(self, Name): , it should be def SetAge(self, Age): because there's not argument Name as such (which you are trying to set in the next line). 此外,在此声明中def SetAge(self, Name): def SetAge(self, Age):它应为def SetAge(self, Age):因为没有这样的参数Name (您尝试在下一行中设置)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM