我正在创建一个新脚本,我在其中生成一个包含字符串列表的数组(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'
答案 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])