2016-06-28 7 views
0

は、ここに私のプログラムです:解決方法:TypeError:object()にパラメータはありませんか?

class member: 
    name = "" 
    phone = "" 
    number = 0 


    def init(self, name, phone, number): 
     self.name = name 
     self.phone = phone 
     self.number = number 


    def setName(self, name): 
     self.name = name 


    def setPhone(self, phone): 
     self.phone = phone 


    def setNumber(self, number): 
     self.number = number 


    def getName(self): 
     return self.name 


    def getPhone(self): 
     return self.phone 


    def getNumber(self): 
     return self.number 


    def displayData(self): 
     print("") 
     print("Name:", self.name) 
     print("Phone:", self.phone) 
     print("Jersey Number:", self.number) 



def displayMenu(): 
    print("") 
    print("==========Main Menu==========") 
    print("1. Display Team Roster.") 
    print("2. Add Member.") 
    print("3. Remove Member.") 
    print("4. Edit Member.") 
    print("5. Save Data.") 
    print("6. Load Data.") 
    print("9. Exit Program.") 
    print("") 
    return int(input("Selection> ")) 

def printMembers(memberList): 
    if len(memberList) == 0: 
     print("No Current Members in Memory.") 
    else: 
     for x in memberList.keys(): 
      memberList[x].displayData() 


def addMember(memberList): 
    newName = input("Enter new member's name: ") 
    newPhone = input("Contact phone number: ") 
    newNumber = int(input("Jersey number: ")) 
    memberList[newName] = member(newName,newPhone,newNumber) 
    #An updated list is returned. 
    return memberList 


def removeMember(memberList): 
    removeName = input("Enter member name to be Removed: ") 
    #First, check to see if the name given, already exists in the list. 
    if removeName in memberList: 
     #Use the del key to delete the entry at the given name. 
     del memberList[removeName] 
    else: 
     print("Member not found in list.") 
    #An updated list is returned. 
    return memberList 


def editMember(memberList): 
    #get the name of the member to be edited. 
    oldName = input("Enter the name of the member yopu want to edit. ") 
    #See if name is already in the list, if yes, get the index of the. 
    #given name, accept the new one, and replace the name in the list. 
    #with the new name. 
    #An updated list is returned. 
    if oldName in memberList: 
     newName = input("Enter the member's new name: ") 
     newPhone = input("Contact phone number: ") 
     newNumber = int(input("Jersey number: ")) 
     memberList[oldName] = member(newName, newPhone, newNumber) 
    return memberList 

def saveData(memberList): 
    filename = input("File name to be saved: ") 
    print("Saving Data...") 
    outFile = open(filename, "wt") 
    for x in memberList.keys(): 
     name = memberList[x].getName() 
     phone = memberList[x].getPhone() 
     number = str(memberList[x].getNumber()) 
     outFile.write(name+","+phone+","+number+"\n") 
     print("Data saved.") 
     outFile.close() 

def loadData(): 
    memberList ={} 
    filename = input("Filename to Load: ") 
    inFile = open(filename, "rt") 
    print("Loading Data...") 
    while True: 
     #Read in a line of text from the text file. 
     inLine = inFile.readline() 
     #If the line is empty, stop loading data. 
     if not inLine: 
      break 
     inLine = inLine[:-1] 
     name, phone, number = inLine.split(",") 
     memberList[name] = member(name, phone, int(number)) 
    print("Data Loaded Successfully") 
    inFile.close() 
    return memberList 



print("Welcome to the Team Manager") 
#Create an empty dictionary by changing tthe [] to {} 
memberList = {} 
#Get the first menu selection from the user and store it in a control value variable. 
menuSelection = displayMenu() 


#The main program loop will detect the correct entry from the user and call the appropriate. 
#method from the user's selection. 
while menuSelection != 9: 
    if menuSelection == 1: 
     printMembers(memberList) 

    elif menuSelection == 2: 
     memberList = addMember(memberList) 

    elif menuSelection == 3: 
     memberList = removeMember(memberList) 

    elif menuSelection == 4: 
     memberList = editMember(memberList) 

    elif menuSelection == 5: 
     memberList = saveData(memberList) 

    elif menuSelection == 6: 
     memberList = loadData() 

    menuSelection = displayMenu() 
print ("Exiting Program...") 

ここに私のエラーです:

C:\Users\Patrick\AppData\Local\Programs\Python\Python36-32\python.exe C:/Users/Patrick/PycharmProjects/Week_6_assignment.py/Week_6_assignment.py 
Welcome to the Team Manager 

==========Main Menu========== 
1. Display Team Roster. 
2. Add Member. 
3. Remove Member. 
4. Edit Member. 
5. Save Data. 
6. Load Data. 
9. Exit Program. 

Selection> 2 
Enter new member's name: margie 
Contact phone number: 3134562252 
Jersey number: 88 
Traceback (most recent call last): 
    File "C:/Users/Patrick/PycharmProjects/Week_6_assignment.py/Week_6_assignment.py", line 151, in <module> 
    memberList = addMember(memberList) 
    File "C:/Users/Patrick/PycharmProjects/Week_6_assignment.py/Week_6_assignment.py", line 74, in addMember 
    memberList[newName] = member(newName,newPhone,newNumber) 
TypeError: object() takes no parameters 

Process finished with exit code 1 

任意の提案は?

+0

なければなりません。その上に、私たちはスプーンフィードをしたり、あなたの部分に労力をかけずに課題を修正したりしません。 – Li357

+0

pythonのクールなことの1つは、セッターとゲッターを書く必要がないということです。あなたのクラスから何が設定されているかをコントロールしたい – Copperfield

答えて

3

初期化メソッドの名前をinitとしました。正しい名前は__init__です。二重のアンダースコアは、PythonがPythonの "特別な"使用のために予約されている名前を示す方法です。正しい名前を使用しないと、スーパークラス(objectの)__init__が呼び出されましたが、引数を取らないので、エラーが発生します。

サイドノート:saveDataに別のエラーがあります。最後のprintcloseの呼び出しはほぼ確実に行われます。したがって、単一の項目だけでなく、すべてのデータを書き込むことができます。また

while True: 
    #Read in a line of text from the text file. 
    inLine = inFile.readline() 
    #If the line is empty, stop loading data. 
    if not inLine: 
     break 
    inLine = inLine[:-1] 
    name, phone, number = inLine.split(",") 
    memberList[name] = member(name, phone, int(number)) 

はほぼ確実に(ファイルの先頭にcsvのインポート)になる必要があります。

あなたのためカンマで改行や分割を処理せず、
for name, phone, number in csv.reader(inFile): 
    memberList[name] = member(name, phone, int(number)) 

.readline()を繰り返し呼び出す無限ループのパターンが含まれています(たとえこれがCSVでない場合でも、for inLine in inFile:という正しい方法でwhilereadlineおよびif not inLine: break; for inLine in map(str.rstrip, inFile):は、改行文字を明示的に切り捨てる必要がなくなります)。

0

__がありません。あなたの

def init(self, name, phone, number): 
     self.name = name 
     self.phone = phone 
     self.number = number 

は、あなたが私たちのコードへの導入を与えていないとデバッグをしようとしたり、デバッグの試みを示していない

def __init__(self, name, phone, number): 
     self.name = name 
     self.phone = phone 
     self.number = number 
+0

誰が神々が私たちの中に住んでいないと言っていますか? –

+0

私の新しいエラー:C:\ Users \ Patrick \ AppData \ Local \ Programs \ Python \ Python36-32 \ python.exe C:/Users/Patrick/PycharmProjects/Week_6_assignment.py/Week_6_assignment.py へようこそチームマネージャ ==========メインメニュー========== 1.チームの選手を表示します。 2.メンバーを追加します。 3.メンバーを削除します。 4.メンバーを編集します。 5.データを保存します。 6.データを読み込みます。 9.プログラムを終了します。 セレクション> 2 トレースバック(最新の呼び出しの最後): ファイル "C:/Users/Patrick/PycharmProjects/Week_6_assignment.py/Week_6_assignment.py" メンバー= addMember(メンバー) NameErrorでは、ライン151、:名前 'addMember'はdfndではありません –

+0

私の悪いです。トレースバック(最新の最後のコール): ファイル "C:/Users/Patrick/PycharmProjects/Week_6_assignment.py/Week_6_assignment。「PY、ライン151、で メンバー= addMember(メンバー) NameError:名 『addMember』が終了コード1 –

関連する問題