将类实例的输出作为输入传递给另一个

乔治

我有以下代码:

import numpy as np

class B():
    def __init__(self, a,b):
        self.a = a
        self.b = b

class Criteria():
    def __init__(self, method, minimum, maximum, measures=None):
        self.method = method
        self.minimum = minimum
        self.maximum = maximum
        self.measures = measures if measures is not None else None

    def calcs(self):
        if self.measures is not None:
            for x in self.measures:
                if (x.a > self.minimum and x.a < self.maximum):
                    x.a = 999
        return self.measures

    def avg(self):
        if self.measures is not None:
            return np.average([x.value for x in self.measures])
        else:
            return np.average(3)# Here should be the result where None is defined
                                # Now I put just an arbitrary number

class Evaluate():
    def __init__(self, criteria):
        self.criteria = criteria


testdata = np.array([Evaluate(
        np.array([Criteria('V', 1,100, 

                np.array([B(100, 0.1),
                          B(11, 0.3),
                          B(300, 0.2),
                          B(33, 0.1)],dtype=object)
                ),

                Criteria('AVG', 22, 220, None)])

)])


for x in testdata:
    for idx, el in enumerate(x.criteria):
        if el.method == 'V':
            el.calcs() # this result must be passed as input to the `el.avg()`
        if el.method == 'AVG':
            el.avg()

我有一个B包含一些数据(a和b字段)的类。

我正在将这些数据加载到Criteria类中,以便通过条件并进行相应的更改。

然后,该Evaluate课程将满足以上所有条件。

我正在使用measures=NoneCriteria类,因为在例如avg函数的情况下,我可能没有度量来计算平均值,但是我可能是(在我的情况下)我正在应用上一个Criteria类的度量(这是我的情况)平均数。

现在,我要完成的就是这个。

最初加载数据:

B(100, 0.1),
B(11, 0.3),
B(300, 0.2),
B(33, 0.1)

通过传递条件(通过运行calcs函数),这些数据将变为:

 B(100, 0.1),
 B(999, 0.3),
 B(300, 0.2),
 B(999, 0.1)

现在,上述数据(来自第一个条件的结果/输出,必须作为输入传递给第二个条件,并使用该avg函数计算平均值avg功能self

因此,我的最终结果将是值599.5。

hpaulj

这是您的脚本的修改。主要是我加了repr但是我也将None情况更改measures一个空列表[]

import numpy as np

class B():
    def __init__(self, a,b):
        self.a = a
        self.b = b
    def __repr__(self):
        return 'B(%s, %s)'%(self.a, self.b)

class Criteria():
    def __init__(self, method, minimum, maximum, measures=None):
        self.method = method
        self.minimum = minimum
        self.maximum = maximum
        self.measures = measures   # may be None

   def __repr__(self):
        # **edit** work with None
        if self.measures is None:
            measures = 'measures: None'
        else:
            measures = [' measures:[']
            for m in self.measures:
                measures.append('   {}'.format(m))
            measures.append('    ]')
            measures = '\n'+ '\n'.join(measures)
        return 'C({0.method},{0.minimum},{0.maximum}, {1})'.format(self, measures)

    def calcs(self):
        if self.measures is not None:
            for x in self.measures:
                if (x.a > self.minimum and x.a < self.maximum):

                x.a = 999
    return self.measures

    def avg(self, calcs=None):
        # **edit** work with None and calcs
        if calcs is None:
            calcs = self.measures
        if calcs is None:
            return 'none'
        elif len(calcs)==0:
            return '[]'
        else:
            return np.average([x.a for x in calcs])

class Evaluate():
    def __init__(self, criteria):
        self.criteria = criteria
    def __repr__(self):
        #return 'E({})'.format(self.criteria)
        astr = 'Evaluate \n'
        for c in self.criteria:
            astr += '{}\n'.format(c)
        return astr


考虑制作一组Criteria对象。一个人AVG必须以某种或其他方式知道measures它的用途。一种方法是measures在构造过程中使用参数。

b1 = np.array([B(100, 0.1),
    B(11, 0.3),
    B(300, 0.2),
    B(33, 0.1)],dtype=object)
b2 = np.array([B(1, 0.1), B(2,.5)])
c1 = Criteria('V', 1, 100, b1)
c2 = Criteria('V', 2, 200, b2)
c3 = Criteria('AVG', 22, 220, None)
c4 = Criteria('AVG', 22, 220, c2.measures)
c5 = Criteria('AVG', 22, 222, c1.measures)

编辑更改迭代以保存最后的calcs结果,如果AVG度量为“无” ,则使用该结果C.avg现在需要一个可选参数。

last_calcs = None
for c in  alist:
    if c.method=='V':
        last_calcs = c.calcs()
        print('calcs', c.measures)
    if c.method=='AVG':
        if c.measures is None:
            avg = c.avg(last_calcs)
        else:
            avg = c.avg()
        print('AVG', avg)

和:

alist = [c3,c1,c3,c2,c3,c4, c5]

这将产生:

evaluate
AVG none         # c3 with nothing preceeding
calcs [B(100, 0.1) B(999, 0.3) B(300, 0.2) B(999, 0.1)]
AVG 599.5        # c3 following c1
calcs [B(1, 0.1) B(2, 0.5)]
AVG 1.5          # c3 following c2
AVG 1.5          # c4 with same measures as c2
AVG 599.5        # c5 with same measures as c1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将类对象实例作为参数从 main() 传递给另一个类对象实例

来自分类Dev

如何将一个sparql查询的输出作为输入传递给另一个sparql查询

来自分类Dev

试图将一个对象的实例传递给另一个类

来自分类Dev

将Ruby对象的实例变量作为映射传递给另一个类的初始化程序

来自分类Dev

如何将模板化类实例作为模板参数传递给另一个模板?

来自分类Dev

将模板类实例传递给另一个类的构造函数

来自分类Dev

将类的方法作为参数传递给C ++中的另一个类

来自分类Dev

如何将输出作为参数传递给另一个命令?

来自分类Dev

将函数输出作为参数传递给另一个函数

来自分类Dev

如何将命令输出作为多个参数传递给另一个命令

来自分类Dev

将命令作为输入传递给另一个命令(su,ssh,sh等)

来自分类Dev

NameError: name '' is not defined - 将函数返回作为输入传递给另一个函数

来自分类Dev

使用构造函数将驱动程序实例传递给另一个类

来自分类Dev

将getClass()作为参数传递给另一个类

来自分类Dev

Swift-将DynamoDB分页输出结果传递给另一个类

来自分类Dev

将awk输出作为输入传递到另一个脚本

来自分类Dev

将数组传递给另一个类

来自分类Dev

如何将一个过程的输出作为参数传递给 tcl 中的另一个过程

来自分类Dev

如何将一个程序的标准输入作为arg传递给另一个程序?

来自分类Dev

如何将一个回声的输出传递给另一个回声的输入?

来自分类Dev

如何将模板实例传递给另一个模板的另一个实例?

来自分类Dev

将一个类传递给另一个类(Python)

来自分类Dev

将一个类的对象传递给另一个类的方法

来自分类Dev

使用构造函数将一个类传递给另一个类

来自分类Dev

PHP将一个类传递给另一个类构造函数

来自分类Dev

将一个类传递给另一个类

来自分类Dev

Azure ARM模板-如何将链接模板的输出变量作为参数传递给另一个模板?

来自分类Dev

将方法的返回值作为参数传递给同一类中的另一个方法

来自分类Dev

如何访问属于我传递给另一个类的类的实例的属性?

Related 相关文章

  1. 1

    将类对象实例作为参数从 main() 传递给另一个类对象实例

  2. 2

    如何将一个sparql查询的输出作为输入传递给另一个sparql查询

  3. 3

    试图将一个对象的实例传递给另一个类

  4. 4

    将Ruby对象的实例变量作为映射传递给另一个类的初始化程序

  5. 5

    如何将模板化类实例作为模板参数传递给另一个模板?

  6. 6

    将模板类实例传递给另一个类的构造函数

  7. 7

    将类的方法作为参数传递给C ++中的另一个类

  8. 8

    如何将输出作为参数传递给另一个命令?

  9. 9

    将函数输出作为参数传递给另一个函数

  10. 10

    如何将命令输出作为多个参数传递给另一个命令

  11. 11

    将命令作为输入传递给另一个命令(su,ssh,sh等)

  12. 12

    NameError: name '' is not defined - 将函数返回作为输入传递给另一个函数

  13. 13

    使用构造函数将驱动程序实例传递给另一个类

  14. 14

    将getClass()作为参数传递给另一个类

  15. 15

    Swift-将DynamoDB分页输出结果传递给另一个类

  16. 16

    将awk输出作为输入传递到另一个脚本

  17. 17

    将数组传递给另一个类

  18. 18

    如何将一个过程的输出作为参数传递给 tcl 中的另一个过程

  19. 19

    如何将一个程序的标准输入作为arg传递给另一个程序?

  20. 20

    如何将一个回声的输出传递给另一个回声的输入?

  21. 21

    如何将模板实例传递给另一个模板的另一个实例?

  22. 22

    将一个类传递给另一个类(Python)

  23. 23

    将一个类的对象传递给另一个类的方法

  24. 24

    使用构造函数将一个类传递给另一个类

  25. 25

    PHP将一个类传递给另一个类构造函数

  26. 26

    将一个类传递给另一个类

  27. 27

    Azure ARM模板-如何将链接模板的输出变量作为参数传递给另一个模板?

  28. 28

    将方法的返回值作为参数传递给同一类中的另一个方法

  29. 29

    如何访问属于我传递给另一个类的类的实例的属性?

热门标签

归档