我正在尝试写一个存储一个人姓名和号码的课程。
class Contact(object)
def __init__(self, name, number)
self._name = name
self._number = number
def getNumber(self):
return self._number
def setNumber(self, newNumber):
self._number = newNumber
def numberUpdate(self):
newNumber = number
self.setNumber(newNumber)
def action(self):
person = Contact("Jonathan")
number = input("What's your number: ")
person.numberUpdate()
person = Contact()
Contact.action(person)
它提示我这个号码,正如我所希望的那样。但在我输入数字后,它一直给我这个错误:
NameError: global name 'number' is not defined
谁能告诉我这里做错了什么?我试过了:
def numberUpdate(self, number):
newNumber = number
self.setNumber(newNumber)
def action(self):
person = Contact("Jonathan")
number = input("What's your number: ")
person.numberUpdate(number)
它给了我:
TypeError: numberUpdate() takes exactly 2 arguments (1 given)
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
Contact类的设计在很多方面被破坏(例如,action()
方法不应该在Contact类中实例化新的Contact对象。)
看起来您的Contact类要存储一个名称和一个带有该名称的数字。您不应该在action()
方法中指定特定名称,而应该允许该类存储任何人的名字。处理__init__
方法中的名称存储,或使用setter方法。
另外,你应该真正重命名你的action()
方法 - 这个名字没有暗示它的结果是什么。您调用action()
方法的语法也是错误的。
基本上,你遇到了问题,因为你不了解面向对象编程的一些基础知识。我建议花一些时间来阅读对象和类的工作方式,而不是克服每个错误。