我如何解决
属性错误:' dict'对象没有属性' nemitx'错误和Keyerror?
class TwissGaussBeam(GaussBeam):
'''__init__(self, twiss, N=1000, pos=np.array([0, 0, 0, 0, 0, 1]),
Q=1e-9, chargesign=-1, restmass=ele_mass)
Create a multi-particle beam with a Gaussian spread in each of the
6 dimensions. The statistics of the beam distribution are calculated
from the Twiss parameters in twiss.'''
def __init__(self, twiss, N=100000, pos=np.array([0, 0, 0, 0, 0, 1]),
Q=1e-12, chargesign=-1, restmass=ele_mass):
P = pos[5]
gammasquared = ( (P*1e6)**2 + restmass**2 ) / restmass**2
betagamma = np.sqrt(gammasquared - 1)
sig = np.zeros(6)
sig[0] = np.sqrt((twiss.nemitx/betagamma) * twiss.betax)
sig[1] = np.sqrt((twiss.nemitx/betagamma) / twiss.betax)
sig[2] = np.sqrt((twiss.nemity/betagamma) * twiss.betay)
sig[3] = np.sqrt((twiss.nemity/betagamma) / twiss.betay)
sig[4] = twiss.sigz
sig[5] = twiss.sigP
答案 0 :(得分:3)
假设twiss是一个字典对象,那么访问Key for Key - nemitx的正确方法就是:
twiss['nemitx']
对于betax,sigz和sigP,这将是相同的。
您可以在此处阅读有关Python词典的更多信息:
答案 1 :(得分:0)
由于用户通过正确答案确认他想访问其字典'nemitx'
的键'twiss'
,因此我发布了此内容。
发生错误是因为您可能正在尝试使用twiss.nemitx
之类的表达式而不是正确的twiss['nemitx']
来访问字典键。
实际上,Python中的twiss.nemitx
表示您正在尝试访问对象nemitx
的属性twiss
,并且可以解释为什么得到AttributeError的原因:
如果此属性不可用,则异常AttributeError为 提出。