我如何解决AttributeError:' dict'对象没有属性' nemitx'错误和Keyerror?

时间:2017-02-13 17:42:03

标签: python

我如何解决

  

属性错误:' 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

2 个答案:

答案 0 :(得分:3)

假设twiss是一个字典对象,那么访问Key for Key - nemitx的正确方法就是:

twiss['nemitx']

对于betax,sigz和sigP,这将是相同的。

您可以在此处阅读有关Python词典的更多信息:

Data Structures Python - Dictionaries

答案 1 :(得分:0)

由于用户通过正确答案确认他想访问其字典'nemitx'的键'twiss',因此我发布了此内容。

发生错误是因为您可能正在尝试使用twiss.nemitx之类的表达式而不是正确的twiss['nemitx']来访问字典键。

实际上,Python中的twiss.nemitx表示您正在尝试访问对象nemitx的属性twiss,并且可以解释为什么得到AttributeError的原因:

如果此属性不可用,则异常AttributeError为 提出。