python - 自动初始化多个类实例
问题描述
到目前为止,我主要使用 Python 进行数据分析,但有一段时间尝试实现一些东西。现在我正在尝试为一条鱼建立一个毒代动力学-毒代动力学模型来分析化学物质对它们的影响。
所以给出以下代码:
import numpy as np
class fish():
def __init__(self):
self.resistance_threshold = np.random.normal(0,1)
我现在的问题是,假设我想初始化 fishclass 的多个实例(比如 1000 条鱼),每个实例对化学物质都有不同的抵抗力,以便对基于代理的种群进行建模。如何自动实现这一目标?
我想知道是否有使用例如索引作为变量名的一部分的东西,例如:
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 的方法。例如设置一个类“人口”,它在自己的__init__
函数中初始化它,但是我如何在不先初始化它们的情况下分配鱼呢?
任何提示、指针或链接将不胜感激。
解决方案
您可以创建一个类FishPopulation
,然后Fish
根据 size 参数存储您需要的所有内容。例如,这样的事情会起作用:
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)]
你可以像这样迭代它:
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
你可以像这样访问他们的索引:
print(fish_population.fishes[0].resistance_threshold)
>>> -0.9658927669391391
推荐阅读
- javascript - 在javascript中嵌套对象数组
- reactjs - React Hooks: skip re-render on multiple consecutive setState calls
- python - 从 Python 列表中去除单引号
- java - java代码中的NoSuchField错误但字段存在
- sql - SQL 我不明白我的触发器出了什么问题
- python - 如何使用 PyQT5 中的按钮单击在单独的窗口中打开图像?
- python - 在图像的所有 3 通道中查找具有特定值的像素
- ruby-on-rails - 向模型添加验证
- php - Laravel - 基于单独的表行创建创建动态前缀的数据库表
- flutter - 我正在尝试使用带有颤振的云 Firestore,但我遇到了错误