来自对象的新对象

问题描述 投票:-2回答:1

我正在尝试实现遗传算法,我是python的新手,我正在尝试使用以下属性构建Python类Gene

Gene has Portid,trt,days

第二类染色体以20个Gene对象为特征

Chromosome has gene1,gene2,gene3...gene20

如图所示UML Diagram请帮忙

我试过了

import random
class Gene:
    def __init__(self,id):
        self.id=id
        self.nb_trax=random.randint(1,10)
        self.nb_days=random.randint(50,100)

class Chromosome(object):
    def __init__(self,object):
        self.port[i] = [Gene(id) for i in range (20)]
g=Gene('China')
f=Chromosome(g)

我收到一个错误

f=Chromosome(g)
  File "chrom.py", line 11, in __init__
    self.port[i] = [Gene(id) for i in range (20)]
AttributeError: 'Chromosome' object has no attribute 'port'
python oop genetic-algorithm
1个回答
0
投票

请尝试以下代码。 Python 3不需要类的(object)层次结构。你也使用它作为你没有使用的参数,所以我也从那里删除它。方形bracke3ts []内部的部分已经创建了列表,因此您不需要将其分配给self.port[i],而是直接分配给self.port

import random

class Gene:
    def __init__(self, id):
        self.id = id
        self.nb_trax = random.randint(1, 10)
        self.nb_days = random.randint(50, 100)

class Chromosome:
    def __init__(self):
        self.port = [Gene(id) for id in range(20)]
© www.soinside.com 2019 - 2024. All rights reserved.