自动初始化 class 的多个实例
Automatically initialize multiple instance of class
到目前为止,我主要使用 Python 进行数据分析,但有一段时间尝试实施一些东西。现在,我正在尝试为鱼实施毒物动力学-毒物动力学模型,以分析化学品对它们的影响。
所以给出以下代码:
import numpy as np
class fish():
def __init__(self):
self.resistance_threshold = np.random.normal(0,1)
我现在的问题是,假设我想初始化鱼的多个实例class(比如 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 的方法。例如设置一个 class "population" 在它自己的 __init__
函数中初始化它,但是我如何在不先初始化它们的情况下分配鱼?
任何提示、指示或链接将不胜感激。
您可以创建一个 class FishPopulation
,然后根据大小参数将您需要的所有 Fish
存储在那里。例如,像这样的东西会起作用:
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
到目前为止,我主要使用 Python 进行数据分析,但有一段时间尝试实施一些东西。现在,我正在尝试为鱼实施毒物动力学-毒物动力学模型,以分析化学品对它们的影响。
所以给出以下代码:
import numpy as np
class fish():
def __init__(self):
self.resistance_threshold = np.random.normal(0,1)
我现在的问题是,假设我想初始化鱼的多个实例class(比如 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 的方法。例如设置一个 class "population" 在它自己的 __init__
函数中初始化它,但是我如何在不先初始化它们的情况下分配鱼?
任何提示、指示或链接将不胜感激。
您可以创建一个 class FishPopulation
,然后根据大小参数将您需要的所有 Fish
存储在那里。例如,像这样的东西会起作用:
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