如何读取函数的多种形式的属性?

时间:2019-04-01 08:53:53

标签: python polynomials

我需要为多项式函数加载属性,但是它以不同的形式加载。

在作业中,我有3个表单值,但我不知道如何读取所有这些值。其中一个输入为list(),下一个输入为元素,最后一个输入多项式的次数(这对我来说是最大的问题)。

p1 = Polynomial([1,-3,0,2])
p2 = Polynomial(1,-3,0,2)
p3 = Polynomial(x0=1,x3=2,x1=-3)
>>> print(*p*)
2x^3 - 3x + 1

我已经尝试过类似的方法:

class Polynomial(object):
    def __init__(self,*X):
        self.x = X
    def __str__(self):
        index = 0
        while True:
            element = element+self.x[index]+"x^"+index

但是那不是第三种情况,也不适用于第一和第二种情况。

2 个答案:

答案 0 :(得分:0)

使用

window.location.origin

在第一种情况下,def __init__(self, *args, **kwargs): self.args = args self.kwargs = kwargs 将包含args(因此您想操纵[[1,-3,0,2]]

在第二种情况下,args[0]将包含args

在最后一种情况下,[1,-3,0,2]将包含kwargs

在最后一种情况下,要将{ x0: 1, x3: 2, x1: -3 }转换为所需的列表(IE kwargs),可以进行

[1,-3,0,2]

这将为您提供所需的[kwargs.get("x0", 0), kwargs.get("x1", 0), kwargs.get("x2", 0), kwargs.get("x3", 0)] 值的列表,在右键处,如果没有,则为0。 (更合适的方式:kwargs

答案 1 :(得分:0)

为了按指定定义类的构造函数,您需要它能够在给定args时在列表元素与多个元素之间进行排序,或者在给定** kwargs时能够在多个关键字参数之间进行排序。

假设用户没有搞砸输入,这将是一个有效的示例:

class Polynomial:
    """
    Assuming max. degree is always 3
    """
    def __init__(self, *args, **kwargs):
        if args:
            if len(args) == 1:  # here user gave a list
                self.x0 = args[0][0]
                self.x1 = args[0][1]
                self.x2 = args[0][2]
                self.x3 = args[0][3]
            elif len(args) == 4:  # here we have the four coefficients
                self.x0 = args[0]
                self.x1 = args[1]
                self.x2 = args[2]
                self.x3 = args[3]
        elif kwargs: # if args are not present, we check if keywords arguments are
            self.x0 = kwargs['x0']
            self.x1 = kwargs['x1']
            self.x2 = kwargs['x2']
            self.x3 = kwargs['x3']

这是有关参数处理的教程:https://pythontips.com/2013/08/04/args-and-kwargs-in-python-explained/

现在您可以对其进行修改,以便您考虑多个学位,缺少关键字,输入错误等... 有时,输入检查和清理可能非常复杂,因此需要使用其他方法来定义整个