0

我正在尝试编写一个存储人名和号码的类。

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)

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

4

1 回答 1

0

一般建议

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

看起来您的联系人类旨在存储一个名称和一个具有该名称的号码。您不应在action()方法中指定特定名称,而应允许该类存储任何人的名称。处理__init__方法中名称的存储,或使用 setter 方法。

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

首要问题

基本上,您遇到问题是因为您不了解一些面向对象编程的基础知识。我建议不要在每个错误中苦苦挣扎,而是花一些时间阅读对象和类的工作原理。

于 2012-05-08T15:40:47.780 回答