0
分配變量我是比較新的規劃,我想知道如果我在一個很好的方式實現以下代碼:基於條件表達式
class Gene:
def __init__(self, gene_symbol, gene_id):
self.gene_symbol = gene_symbol
self.gene_id = gene_id
if is_valid_refseq(gene_id):
self.gene_id_type = REFSEQ
elif is_valid_ensembl_gene(gene_id):
self.gene_id_type = ENSEMBL_GENE
elif is_valid_ensembl_transcript(gene_id):
self.gene_id_type = ENSEMBL_TRANSCRIPT
else:
raise InvalidGeneIDError
假設gene_id
和gene_id_type
都是字符串。有沒有更聰明的方法來壓縮if-elif語句(特別是如果我決定添加更多這些條件的話)?我在想可能會有,但這會讓代碼變得不可讀?隨着我向前邁進,我希望開發出良好的編碼習慣/風格,並發現一些便利的工具/技巧。謝謝你的幫助!
我想這大約是那樣乾淨,你可以使此代碼。 – BallpointBen
如果(a)refseq,emsembl_gene和ensembl_transcript是互斥類別,或者(b)refseq是ensembl_gene的子集或特殊情況,而ensembl_gene又是ensembl_transcript的子集或特例,則此代碼有意義。如果層次結構以其他方式發揮作用,則不起作用(例如,如果所有ensembl_transcript基因也都是refseq基因)。至於風格方面,沒有什麼問題,我同意羅伯特的意見,儘可能做到可讀性。 – jez
請注意,這是真正的地方要問關於嘗試但未解決的編程問題,而不是真的「是我的代碼好嗎?」輸入問題。您可能需要http://codereview.stackexchange.com/ – jez