【发布时间】:2022-07-12 01:59:33
【问题描述】:
我有一个类来组织包含多个变量的数据集。我读入了多个我想比较的数据集,所以我想创建一个函数,如果可能的话,它将一个类变量作为参数。目前我有下面的设置,我认为应该可以工作,但我想知道是否有更优雅/pythonic 的方式来解决它?
import numpy as np
import matplotlib.pyplot as plt
class MyClass:
def __init__(self, input=None):
_tmp = np.genfromtxt(input)
self.var1 = _tmp['f0']
self.var2 = _tmp['f1']
self.var3 = var1 + var2
self.var4 = var1 * var2
def var(self, v='var1'):
if v=='var1':
return self.var1
if v=='var2':
return self.var2
if v=='var3':
return self.var3
if v=='var4':
return self.var4
def plot_MyClass(data1, data2, var='var1'):
plt.plot(data1.var(var), data2.var(var), 'k-')
return
###########
data1 = MyClass(file1.txt)
data2 = MyClass(file2.txt)
plot_MyClass(data1, data2, var='var3')
plt.show()
【问题讨论】:
-
def var(self, v='var1'):有什么意义??为什么不只是data.var1或data.var2? -
你可以使用
getattr(self, v),但是你应该首先考虑是需要4个单独的实例属性,还是一个dict-valued属性。
标签: python numpy class matplotlib