首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动初始化类的多个实例

自动初始化类的多个实例
EN

Stack Overflow用户
提问于 2020-01-10 23:37:15
回答 1查看 31关注 0票数 0

到目前为止,我主要使用Python进行数据分析,但也有一段时间尝试实现一些东西。现在,我正在尝试为一条鱼建立一个毒物动力学-毒物动力学模型,以分析化学物质对它们的影响。

因此,给定以下代码:

代码语言:javascript
复制
import numpy as np

class fish():

def __init__(self):
    self.resistance_threshold = np.random.normal(0,1)

我的问题是,假设我想初始化fish类的多个实例(比如1000条鱼),每个实例对一种化学物质具有不同的抵抗力,以便对基于智能体的种群进行建模。如何才能自动实现这一点?

我想知道是否有一些东西,例如使用索引作为变量名的一部分,例如:

代码语言:javascript
复制
for fishid in range(0,1000):
    fishfishid = fish() # use here the value of fishid to become the variables name. E.g. fish1, fish2, fish3, ..., fish999

现在,即使有可能在Python中做到这一点,我总是有一种感觉,实现这1000个实例是一种糟糕的做法。并且想知道是否有类似OOP-Python的方法。例如,设置一个类"population“,在它自己的__init__函数中初始化它,但是我如何在不初始化它们的情况下分配它们呢?

任何提示,指针或链接将非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-11 00:16:16

您可以创建一个FishPopulation类,然后根据Fish参数在其中存储所需的所有大小。例如,下面这样的代码将会起作用:

代码语言:javascript
复制
import numpy as np


class Fish:
    def __init__(self):
        self.resistance_threshold = np.random.normal(0, 1)


class FishPopulation:
    def __init__(self, size=1000):
        self.size = size
        self.fishes = [Fish() for _ in range(size)]

你可以像这样迭代它:

代码语言:javascript
复制
fish_population = FishPopulation(size=10)
for fish in fish_population.fishes:
    print(fish.resistance_threshold)

>>> 
    -0.9658927669391391
    -0.5934917229482478
    0.8827336199040103
    -1.5729644992077412
    -0.7682070400307331
    1.464407499255235
    0.7724449293785645
    -0.7296586180041732
    -1.1989783570280217
    0.15716170041128566

你可以像这样访问他们的索引:

代码语言:javascript
复制
print(fish_population.fishes[0].resistance_threshold)

>>> -0.9658927669391391
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59684717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档