我想學習python 3中面向對象的編程。我正在做一個筆記本程序的變體,我在一本書中但不是將筆記添加到筆記本中我正在嘗試將時間添加到時間表。'自我'似乎佔據了我的一個論點
在原來的教程,這是在主程序:
def add_note(self):
memo = input("Enter a memo: ")
self.notebook.new_note(memo)
print("Your note has been added")
,這是類模塊(筆記本):
def new_note(self, memo, tags = ''):
'''create a new note and add it to the list'''
self.notes.append(Note(memo,tags=''))
我的變化是這樣的:
main:
def add_work_day(self):
date = input ("Enter date : ")
hours = input ("Enter hours worked : ")
rate = input ("Enter hourly rate : £")
workday = Timesheet.day(date, hours, rate)
模塊:
class Timesheet:
def __init__(self):
self.timesheet = []
def day(self, date, hours, rate):
self.timesheet.append(day(date, hours, rate))
這是給我這個錯誤:
File "C:\Python33\timesheet_menu.py", line 39, in add_work_day
workday = Timesheet.day(date, hours, rate)
TypeError: day() missing 1 required positional argument: 'rate'
好像在「自我」「高清天(個體經營,日期,時間,速度)」霸佔之一我的輸入參數。
有人能告訴我我在這裏失蹤了嗎?
.....更新.....
所以,現在我已經在主要創建時間表()的一個實例:
def add_work_day(self):
date = input ("Enter date : ")
hours = input ("Enter hours worked : ")
rate = input ("Enter hourly rate : £")
workday = Timesheet()
workday.add_day(date, hours, rate)
但我從得到一個新的錯誤我的時間表()方法「天」
class Timesheet:
def __init__(self):
self.timesheet = []
def day(self, date, hours, rate):
self.timesheet.append(day(date, hours, rate))
File "C:\Python33\timesheet_menu.py", line 40, in add_work_day
workday.add_day(date, hours, rate)
File "C:\Python33\timesheet.py", line 29, in add_day
self.timesheet.append(day(date, hours, rate))
NameError: global name 'day' is not defined
據我所知,這個問題是.append(一天的一部分,但我無法弄清楚如何解決它。我知道一個變量是不是全球性的,除非規範ified,但我的邏輯告訴我,方法應該是。因此,它必須是.append(天正在尋找所謂的「天」原先存在的變量。我很困惑,因爲這種方法在例如,從書的工作。
在'Timesheet'的'day()'方法內部,你試圖調用'day()',如果你的語法正確的話會導致無限循環。你究竟在做什麼*試圖完成什麼? – rmunn 2013-04-28 16:26:26
是的,我偶然發現了這個無限循環!我現在排序了。我忘記了我有另一個名爲Work_day的類,我應該一直打電話而不是在day()內調用day()。感謝您的親切幫助和耐心! – Dijerydack 2013-04-28 17:29:26