【问题标题】:How to set a bias on multiple methods within a class?如何在一个类中设置多个方法的偏差?
【发布时间】:2020-01-24 16:18:51
【问题描述】:

免责声明:Python 新手

我的代码

class summation():

    def __init__(self, num_1, num_2):

        self.add_1 = num_1 + num_2
        self.multiply = num_1 * num_2
        self.divide = num_1 / num_2
        self.difference = num_1 - num_2 

    def summate(self):
        return '{}'.format(self.add_1)

    def mult(self):
        return '{}'.format(self.multiply)

    def divis(self):
        return '{}'.format(self.divide)

    def diff(self):
        return '{}'.format(self.difference)

input_values = summation(int(input()), int(input()))

print('Sum =', input_values.add_1)
print('Multiplied =', input_values.multiply)
print('Divided =', input_values.divide)
print('The difference between the two values is ',input_values.difference)```

我想包含一个偏差方法,该方法将采用用户输入的值并对它们应用可以轻松更改的偏差

I.E.用户输入 (2) 和 (3),偏差对它们应用 1.02 乘数

所以事情就是这样开始的

bias = 1.04

def apply_bias(self):
        return input_values * bias

显然这不起作用,但它给了你一个想法

有人有什么想法吗? 干杯

【问题讨论】:

  • 您希望应用偏差的时间和频率是多少?它应该只应用于传递给__init__ 的初始 2 个值,还是应用于四个计算值中的每一个?
  • 听起来应该将偏差作为第三个参数传递给__init__(可能的默认值为1)并应用于num_1和@987654326 @ 在将它们用于其他任何事情之前。
  • 我希望每次运行程序时都应用偏差。如果我不想让它运行,那么我只需将偏差设置为 1。我不能将它设置为零,因为我会想象它会带回一个 NaN 值。

标签: python class math methods syntax


【解决方案1】:

不确定您打算做什么,但我认为其中一个应该适合您。

bias = 1.04

# Accept two values multiply them and the bias and return one result
def apply_bias(self, first, second):
    return (first * second) * bias

# or if you want to accept two values and return a tuple of two results
def apply_bias(self, first, second):
    return first * bias, second * bias

阅读您的评论后编辑,我想我理解得更好。试试这个:

class Summation:
    def __init__(self, first, second, bias=1.04):
        self.first = first
        self.second = second
        self.bias = bias

    def summate(self, include_bias=False):
        result = self.first + self.second
        if not include_bias:
            return result
        return result * self.bias

    def mult(self, include_bias=False):
        result = self.first * self.second
        if not include_bias:
            return result
        return result * self.bias

    def divis(self, include_bias=False):
        result = self.first / self.second
        if not include_bias:
            return result
        return result * self.bias

    def diff(self, include_bias=False):
        result = self.first - self.second
        if not include_bias:
            return result
        return result * self.bias

    def apply_bias(self, bias):
        self.bias = bias

    def summary(self, include_bias=False):
        print(f'Sum = {input_values.summate(include_bias)}')
        print(f'Multiplied = {input_values.mult(include_bias)}')
        print(f'Divided = {input_values.divis(include_bias)}')
        print(f'The difference between the two values is {input_values.diff(include_bias)}')


input_values = Summation(int(input("first:")), int(input("second:")))
input_values.summary()
str_bias = input("bias:")
if str_bias:
    input_values.apply_bias(float(str_bias))
    input_values.summary(True)

这将打印您的描述

first:2
second:2
Sum = 4
Multiplied = 4
Divided = 1.0
The difference between the two values is  0
bias:1.04
Sum = 4.16
Multiplied = 4.16
Divided = 1.04
The difference between the two values is  0.0

【讨论】:

  • 所以更具体地说,我想从用户输入中获取两个数字,然后加/除/乘并找到新数字的差异。然后,我希望能够为这些打印值设置一个乘数(偏差),即如果输入值 = 2、2,则加法将变为 4,如果乘数为 1.04,则偏差将为 4.16。我希望每次运行函数时都能做到这一点。
  • 我想我明白了,您想将偏见应用于所有方法...检查更新的答案
  • 感谢 JBird,经过一段时间的思考,我最终实现了类似的东西。感谢您的确认。
猜你喜欢
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多