我已經寫了一些代碼,允許術語'工作'普遍用於執行一項獨特的任務。可以通過設置初始變量「job_type」來選擇特定的作業。從最初的變量中選擇一個特定的子類來執行適當的工作。也許代碼會更有意義:)正確的類繼承
if __name__=='__main__':
# these variables would normally be called in from a config file
job_type = 'job1'
uni_var = 10
job_select = superClass(job_type, uni_var)
job_select.job()
class superClass(object):
def __init__(self, job_type, uni_var):
self.job_type = job_type
self.uni_var = uni_var
if self.job_type == 'job1':
self.jobChoice = option1()
else:
self.jobChoice = option2()
# This is the definition called by the main function it then
# redirects the request to the appropriate job sub class
def job(self):
self.jobChoice.job()
class option1(superClass):
def __init__(self):
pass
def job(self):
print 'job option 1'
print uni_var
class option2(superClass):
def __init__(self):
pass
def job(self):
print 'job option 2'
print uni_var
這段代碼背後的想法是允許單個/常量「主」功能,行動上的各種變量「工作類型」純粹基於獨特的任務。它似乎很好。
我的問題(作爲一個非常缺乏經驗的編碼員)是,我有沒有正確的方式或有更好的方式來做事情?
另外,我有沒有在superClass中正確設置變量'uni_var',以便在所有/任何superClass子類中正確共享?
謝謝。
你可以使這更簡單;如果** all **你的'__init__'方法是用相同的參數調用'super(...).__ init__',那麼你可以完全跳過實現'__init__'並繼承它。 – Ben
謝謝本。這幾乎是所有的事情發生,相同的爭論(雖然有不止兩個)將用於所有的子類。如何跳過實現__init__並繼承這些爭論? – user788462
@ user788462只要不在子類中寫入__init__方法,它們就會自動使用超類'__init__'。 – Ben