[英]Calling a function from a class in main
我似乎犯了一個我找不到的愚蠢錯誤。 盡管查看了示例代碼並嘗試模擬語法,但我只是嘗試從我的記錄類中調用我的函數並且出現無效的語法錯誤。
我試過遵循教程並以各種方式調用函數,所以問題可能不在於函數的調用,而是我的其他感覺。
class record:
def __init__(self,telephone,lastname,firstname):
self.telephone = telephone
self.lastname = lastname
self.firstname = firstname
def addrecord(self,x,y,z):
x = input('Enter telephone number')
y = input('Enter lastname')
z = input('Enter firstname')
phonebook.append(record(x,y,z))
return
def deleterecord(self,x):
phonebook[x-1].pop
return
phonebook = record[]
addrecord(515,'fin','matt')
print(phonebook[0].firstname)
deleterecord(1)
print(phonebook[0].firstname)
如果所有這些都有效,我希望輸出為“matt”“null”
您的代碼存在許多問題:
deleterecord
您應該調用phonebook.pop(x)
。namedtuple
對記錄進行建模。record[]
是無效的 Python。替代實現:
from collections import namedtuple
PhoneRecord = namedtuple("PhoneRecord", ['firstname', 'lastname', 'telephone'])
class PhoneBook:
def __init__(self):
self._phonebook = []
def addrecord(self, record):
self._phonebook.append(record)
return self._phonebook.index(record)
def deleterecord(self, i):
self._phonebook.pop(i)
phonebook = PhoneBook()
record_index = phonebook.addrecord(PhoneRecord(firstname="matt", lastname="snow", telephone="25512521"))
print(phonebook._phonebook)
phonebook.deleterecord(record_index)
print(phonebook._phonebook)
這將在控制台中產生:
[PhoneRecord(firstname='matt', lastname='snow', telephone='25512521')]
[]
您的問題的簡化版本是,給定代碼
records = []
records.append("matt")
print(records[0])
del records[0]
print(records[0])
為什么我沒有得到以下輸出
"matt"
None
相反,您會收到IndexError
異常。
原因是您正在訪問超出列表大小的元素,Python 通過引發異常而不是返回 None 來處理此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.