如何获取数组中变量的名称,以用作另一个语句的一部分?

时间:2018-06-08 17:19:59

标签: python numpy variables

我正在创建一个新脚本,我在其中生成一个包含字符串列表的数组(g='g_o.DisplacementMultiplier_'+str(y+1),其中y从0到400不等)。 这稍后必须用于在第三方软件中设置四个属性,但我看到我正在使用的语法设置变量g的属性而不是g_o.DisplacementMultiplier_#)。

附件是代码:

import smtplib
import math
import time
import imp
import numpy as np
s_o,g_o=new_server
s_o.new()

# Geometry
Bench = 5 # Crest bench
Angle = 23
Height = 15.3

# Frequencies
fz=[]
Tmin=0.01
Tmax=4
Tstep=0.01
Ts = np.arange(Tmin, (Tmax+Tstep), Tstep)
fz = float(1)/Ts

# Calculate x-lenght of slope
dtot= Height / math.tan(math.pi*Angle/180)

# Calculate xmax
xmax = (2 * dtot)+ Bench

# Displacement
g_o.linedispl (0, 0, xmax, 0)
g_o.set(g_o.Line_1.LineDisplacement.Displacement_x, "Prescribed")
g_o.set(g_o.Line_1.LineDisplacement.Displacement_y, "Fixed")
g_o.set(g_o.Line_1.LineDisplacement.ux_start, 1)

# Generate displc multipliers
for y in range (0, len(fz)):
    g_o.displmultiplier()
    g='g_o.DisplacementMultiplier_'+str(y+1)
    g_o.set(g[y].Amplitude, 10)
    g_o.set(g[y].DataType, "Accelerations")
    g_o.set(g[y].Frequency, fz[y])

代码中的错误是:

  g_o.set(g[y].Amplitude, 10)
AttributeError: 'str' object has no attribute 'Amplitude'

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你试图动态访问财产。

删除底部for循环中的以下行

g='g_o.DisplacementMultiplier_'+str(y+1)

按照这些行改变

g_o.set(g[y].Amplitude, 10)
g_o.set(g[y].DataType, "Accelerations")
g_o.set(g[y].Frequency, fz[y])

g_o.set(g_o['DisplacementMultiplier_'+str(y+1)].Amplitude, 10)
g_o.set(g_o['DisplacementMultiplier_'+str(y+1)].DataType, "Accelerations")
g_o.set(g_o['DisplacementMultiplier_'+str(y+1)].Frequency, fz[y])