【发布时间】:2016-07-06 12:49:58
【问题描述】:
我有 2 个文件,我正在使用 python 类方法来解析数据并创建 sql INSERT 语句。在我的两个文件中,我都有一个基因名称列表。第一个文件是 20 个基因名称的简单列表,面板名称始终相同。第二个文件有更多关于基因的信息,每个基因名称会有多个条目。
我现在的代码如下:
class Gene(object):
def __init__(self, gene):
self.gene = gene
def make_gene_sql(self):
sql = """INSERT INTO gene ("""+"'"+self.gene+"', '"+panel+"')"
return sql
class Variants(object):
def __init__(self, gene, run_id, sample, variant):
self.run_id = run_id
self.sample = sample
self.gene = gene
self.variant = variant
def make_vsr_sql(self):
sql = "INSERT INTO variants_sample_run ("+ "'"+self.sample +"', '"+self.gene +"', '"+self.variant +"', '"+self.run_id+"')"
return sql
gene_file = open(gene_path, 'r+')
for line in gene_file:
gene_object = Gene(line.strip('\r\n'))
gene_sql = gene_object.make_gene_sql()
cursor.execute(gene_sql)
var_file = open(var_path, 'r+')
for line in var_file.readlines()[1:]:
item = line.split('\t')
sample = item[0]
run = item[1]
gene = item[2]
variant = item[3]
variants_object = Variants(gene, run, sample, variant)
sql = variants_object.make_var_sql()
cursor.execute(sql)
我的问题是:有没有办法让 Variants 类继承自 Gene 类,并创建一个新函数来检查我的 variables_object 中的基因变量是否在genes_object 中?即通过基因类传递我的变量以确保我的 var_file 中的基因变量肯定在基因文件中?像这样的东西(但确实有效!)?
class Variants(Gene):
def __init__(self, gene, run_id, sample, variant):
self.run_id = run_id
self.sample = sample
self.gene = gene.gene
self.variant = variant
def check_gene(gene):
if self.gene not in gene.gene:
print('Gene not correct')
def make_vsr_sql(self):
sql = "INSERT INTO variants_sample_run ("+ "'"+self.sample +"', '"+self.gene +"', '"+self.variant +"', '"+self.run_id+"')"
return sql
我在想这也许可以使用从包含所有基因的 Gene 类创建的列表,但是我不确定这是否是最好的方法?
【问题讨论】:
标签: python python-2.7 class inheritance methods