我正在使用python 2.我导入了pyspec库。说'scan'是实例类型数据。然后我可以绘制:
figure()
plot(scan.A,scan.B)
show()
此代码图将'xvar'作为x变量,'yvar'作为y变量。在'扫描'中,有许多变量(比如A,B,C等)。
我尝试定义一个函数:
def plotscan(x,y):
figure()
plot(scan.x,scan.y)
show()
plotscan(A,B)
但是,此代码会显示错误消息:名称“A”未定义
如何修复此功能?
答案 0 :(得分:0)
我认为您的目标是,当您致电scan.x
时,函数x中的内容为A,scan.A
变为scan.x
。
你这样做的方式不起作用,因为口译员不知道A和B是什么,scan.< value of x >
只会被getattr()
评估为class Scan(object):
A = 1
B = 12
C = 20
scan = Scan
def plotscan(x,y):
_x = getattr(scan, x)
_y = getattr(scan, y)
print _x, _y
plotscan("A", "B")
而不是&#39}有意义。
解决方案是使用plot
(请参阅https://docs.python.org/2/library/functions.html)
print
(为了便于说明,我已将plotscan(x, y)
的电话替换为getattr()
,因此未安装特定图书馆的所有人都可以尝试这个示例。
在这里,您将A和B作为字符串传递,在scan
内部,函数a b
x 23
s 34
v 15
g 05
k 69
返回对象x y z
1 0 10
2 10 20
3 20 30
4 30 40
5 40 50
6 50 60
7 60 70
的属性值,该对象的名称由第二个参数。