如何在python的子类中创建附加属性?

问题描述 投票:0回答:1

我想为子类添加一个附加属性。我生成了一个类Plant。现在,我将创建一个Plant_w_ID类,该类是Plant的派生子类。 Plant_w_ID类应包含一个附加属性plant_id,该属性保存每个植物的标识符。植物标识符可以作为参数传递给创建函数,例如plant = Plant_w_ID('P1')

我还需要在Plant_w_ID类中定义一个'getter'方法来相应地检索ID属性的值。

我可以知道如何

i)为Plant_w_ID类包括一个附加属性plant_id

ii),我不知道如何将植物标识符作为参数传递给创建函数。 plant = Plant_w_ID('P1')

iii)在Plant_w_ID类中定义一个“ getter”方法以相应地检索ID属性的值

最后,使用吸气剂方法的目的是什么?这是我写的脚本。谢谢。

import random
genome_length =50
bases = ['A', 'C', 'T', 'G']

class Plant:
   def __init__(self):
   self.genome = []
   self.genome = [random.choice(bases) for _ in range(genome_length)]

class Plant_w_ID(Plant):
   def __init__(self, plant_id):
       super().__init__()
       self.plant_id = plant_id

   def add_plant_id(self, plant_id):
       for i in range(len(plant_list)):
       plant_id='P'+str(i)
       plant_list.append(plant_id)

def main():
    plant_list = []
    for x in range (5):   
        plant =Plant()
        plant_list.append(plant)
python-3.x inheritance getter
1个回答
0
投票

您可以从Plant类继承,并添加所需的其他属性,如下面的示例plant_id。另外,不要忘记使用相关属性调用Plant __init__函数。

可以通过几种方法来获取新属性(以下显示了两个示例)

import random
genome_length = 50                  
bases = ['A', 'C', 'T', 'G']        

class Plant:
    def __init__(self):
        self.genome = list()
        self.genome = [random.choice(bases) for _ in range(genome_length)]

    def get_genome(self):
        return self.genome

class Plant_w_ID(Plant):
    def __init__(self, plant_id):
        super().__init__()
        self.plant_id = plant_id

    @property
    def plant_id(self):
        return self.plant_id

    def get_plant_id(self):
        return self.plant_id

def main():
    plant_list = []
    for x in range (5):   
        plant =Plant_w_ID('P{0}'.format(x))
        plant_list.append(plant)
© www.soinside.com 2019 - 2024. All rights reserved.