我是自學的python,需要一些幫助,我想寫一個非常簡單的類。我想在各種模塊中使用InitLog類以外的所有東西,而無需每次使用它時聲明一個新的類變量(例如,我不想在每個(衆多)模塊中聲明betty = Initlog,我希望使用該類。 ?有沒有一種方法,我可以做到這一點感謝事先python 3 new to classes
import os
import sys
import pdb
import fileinput
import Tools
class InitLog:
def __init__(self):
pass
def Update(self):
self.sound = sound
self.engine = engine
def save(self):
self.summery = 'sound: ' + self.sound + '\n'
self.summery += 'engine: ' + self.engine + '\n'
#lock for use within threads
Tools.Locked.State.LogAddress = False
while Tools.Locked.State.LogAddress == True: pass
Tools.Locked.State.LogAddress = True
try: os.remove(path + '/' + self.dest + '/init.log')
except: pass
path = os.getcwd()
if not os.path.exists(self.dest): os.makedirs(self.dest)
if os.path.isfile(path + '/' + self.dest + '/init.log') == True: os.remove(path + '/' + self.dest + '/init.log')
with open (path + '/' + self.dest + '/init.log', mode='a', encoding='utf-8') as a_file:
a_file.write(self.summery)
Tools.Locked.State.LogAddress = False
InitLog.Update.sound = 'on'
InitLog.Update.engine = 'google.txt'
InitLog.save()
錯誤:TypeError: save() takes exactly 1 positional argument (0 given)
編輯:
我已經短路上面的例子要少冗餘
這裏是我以前使用的工作代碼(attepting我原來的請求前使用InitLog沒有宣佈一個新的類變量)
import os
import sys
import pdb
import fileinput
import Tools
class InitLog:
def __init__(self):
pass
def setLaws(self):
self.sound = 'off'
self.engine = 'google.txt'
def Update(self):
while Tools.Locked.State.LogAddress == True: pass
Tools.Locked.State.LogAddress = True
try: os.remove(path + '/' + self.dest + '/init.log')
except: pass
summery = 'sound: ' + self.sound + '\n'
summery += 'engine: ' + self.engine + '\n'
path = os.getcwd()
if not os.path.exists(self.dest): os.makedirs(self.dest)
if os.path.isfile(path + '/' + self.dest + '/init.log') == True: os.remove(path + '/' + self.dest + '/init.log')
with open (path + '/' + self.dest + '/init.log', mode='a', encoding='utf-8') as a_file:
a_file.write(summery)
Tools.Locked.State.LogAddress = False
Tools.Locked.State.LogAddress = False
log = InitLog()
log.setLaws()
log.sound = 'on'
log.Update()
我想不用說了log = InitLog()
的每一個模塊我需要使用此類
這種類的使用幾乎都是錯誤的。我建議你先回去讀一下關於班級,實例化和方法調用的內容。 – Keith
['@ classmethod'](http://docs.python.org/library/functions.html#classmethod)可以幫助上面的'save()'和'Update()',但是正如Keith所說的,你還有其他問題與代碼 –
嘿邁克,我已經包含了我原來的工作代碼(在決定我不想在每個模塊上聲明InitLog之前) – Rhys