【发布时间】:2021-07-20 21:28:41
【问题描述】:
我有一个 python 对象,具有许多属性和函数(下面的虚拟示例):
class molecule:
def __init__(self, atoms, coords):
self.atoms=np.copy(atoms)
self.coords=np.copy(coords)
def shift(self,r):
self.coords=self.coords+r
我想最好生成这些对象的numpy 数组(或list),并在不总是循环遍历数组的情况下获得其属性。目前我通过循环创建分子对象列表(mols)并通过循环检查其属性,例如:
atomList=[mol.atoms for mol in mols]
但我更希望获得它:
atomList=mols.atoms
有没有一种无需手动定义molList 类并手动添加其属性、函数等的自动方法来获取这样的数组/列表类?
【问题讨论】:
-
除了定义一个
atoms函数,它需要一个分子列表,我认为没有更简洁的方法可以做到这一点。我会继续使用列表推导。 -
您是在寻找一种隐藏列表理解的方法,这样您就不必每次都键入它(使用函数),还是想要一种完全避免列表理解的方法?有没有办法可以将分子表示为
np数组? -
分子被定义为具有典型 numpy 数组属性的对象。我已经有几十个函数可以在它们上面运行。我刚开始使用太多的分子,我不能再将它们一一定义为 mol1、...、mol150,我需要使用 molList。我想根据属性(例如最大能量等)或随机选择它们。
标签: python arrays list class inheritance