无法在联系信息类中存储字段

时间:2012-05-08 15:25:13

标签: python-2.7

我正在尝试写一个存储一个人姓名和号码的课程。

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)

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

一般建议

Contact类的设计在很多方面被破坏(例如,action()方法不应该在Contact类中实例化新的Contact对象。)

看起来您的Contact类要存储一个名称和一个带有该名称的数字。您不应该在action()方法中指定特定名称,而应该允许该类存储任何人的名字。处理__init__方法中的名称存储,或使用setter方法。

另外,你应该真正重命名你的action()方法 - 这个名字没有暗示它的结果是什么。您调用action()方法的语法也是错误的。

总体问题

基本上,你遇到了问题,因为你不了解面向对象编程的一些基础知识。我建议花一些时间来阅读对象和类的工作方式,而不是克服每个错误。