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

How to create an additional attribute in the subclass in python?

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

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

请问可以

i) 在 Plant_w_ID class

中包含一个附加属性 plant_id

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

iii) 在Plant_w_ID class中定义一个'getter'方法来相应地检索ID属性的值

最后,getter 方法的目的是什么? 这是我写的脚本。谢谢。

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_w_ID()
        plant_list.append(plant)

您可以继承 Plant class 并添加您想要的附加属性,如以下示例所示 plant_id。 此外,不要忘记使用相关属性调用 Plant __init__ 函数。

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

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)