當(dāng)我在一個(gè)有很多嵌套函數(shù)調(diào)用和對(duì)象層次結(jié)構(gòu)的項(xiàng)目中工作時(shí),我想知道什么是將所有必需的參數(shù)傳遞到最高層,再?gòu)哪抢镏鸩絺鬟f到較低層的最佳實(shí)踐。示例:3個(gè)類及其所需的(構(gòu)造函數(shù))參數(shù):A級(jí):a,bB類:c,d,eC級(jí):f類A持有B的一個(gè)實(shí)例,而B持有C的一個(gè)實(shí)例。它們?cè)诟髯愿讣?jí)的構(gòu)造函數(shù)中初始化。因此,這意味著使用我的代碼的人將只初始化A的新對(duì)象,并且必須將所有參數(shù)a,b,c,d,e,f傳遞給A,然后在該參數(shù)處對(duì)其進(jìn)行處理或進(jìn)一步分發(fā)。示例代碼:class A(object): def __init__(self, a, b, c, d, e, f): b = B(c, d, e, f)class B(object): def __init__(self, c, d, e, f): c = C(f)class C(object): def __init__(self, f): pass我的第一個(gè)嘗試是直接在構(gòu)造函數(shù)中列出類及其所有子級(jí)需要的所有參數(shù),但這很容易出錯(cuò),并且具有很高的代碼冗余性,尤其是在每一層提供默認(rèn)值時(shí)。所以我正在考慮使用** kwargs和* args代替。這樣的好處是,我可以將那些參數(shù)傳遞給孩子,并且每一層都可以從那里獲取所需的參數(shù)。但是,缺點(diǎn)是希望使用此層次結(jié)構(gòu)的類的人無法使用IDE的自動(dòng)完成功能來查看期望的參數(shù)。在Python 3中,什么被認(rèn)為是最佳實(shí)踐?
添加回答
舉報(bào)
0/150
提交
取消