Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-帮助定义一个类,该类根据参数的不同使用不同数量的属性_Python_Python 2.7 - Fatal编程技术网

Python-帮助定义一个类,该类根据参数的不同使用不同数量的属性

Python-帮助定义一个类,该类根据参数的不同使用不同数量的属性,python,python-2.7,Python,Python 2.7,定义一个Python类多项式,它提供执行 多项式的代数运算。您的类应该按照所描述的行为 在以下成绩单样本中: >>> p1 = Polynomial([1, 2, 3]) >>> p1 1.000 z**2 + 2.000 z + 3.000 >>> p2 = Polynomial([100, 200]) >>> p1.add(p2) 1.000 z**2 + 102.000 z + 203.000 >>>

定义一个Python类多项式,它提供执行 多项式的代数运算。您的类应该按照所描述的行为 在以下成绩单样本中:

>>> p1 = Polynomial([1, 2, 3])
>>> p1
1.000 z**2 + 2.000 z + 3.000
>>> p2 = Polynomial([100, 200])
>>> p1.add(p2)
1.000 z**2 + 102.000 z + 203.000
>>> p1 + p2
1.000 z**2 + 102.000 z + 203.000
>>> p1(1)
6.0
>>> p1(-1)
2.0
>>> (p1 + p2)(10)
1323.0
>>> p1.mul(p1)
1.000 z**4 + 4.000 z**3 + 10.000 z**2 + 12.000 z + 9.000
>>> p1 * p1
1.000 z**4 + 4.000 z**3 + 10.000 z**2 + 12.000 z + 9.000
>>> p1 * p2 + p1
100.000 z**3 + 401.000 z**2 + 702.000 z + 603.000
>>> p1.roots()
[(-1+1.4142135623730947j), (-1-1.4142135623730947j)]
>>> p2.roots()
[-2.0]
>>> p3 = Polynomial([3, 2, -1])
>>> p3.roots()
[-1.0, 0.33333333333333331]
>>> (p1 * p1).roots()
Order too high to solve for roots.
你将如何设计这个函数,使它可以接受不同等级的多项式。我真的迷路了


谢谢。

您可以创建一个属性数量可变的类:

class Var:
    def __init__(self,**kwargs):
        for attr in kwargs.keys():
            self.__dict__[attr] = kwargs[attr]




v = Var(name="Sam",age=22)
print(v.__dict__)
print(v.name)
print(v.age)
输出:

{'age': 22, 'name': 'Sam'}
Sam
22
('Attributes of v1', {'a': 1, 'c': 3, 'b': 2})
('attributes of v2', {'a': 4, 'b': 5})
但是,如果要将列表作为参数传递,并将列表中的每个成员分配给类中的一个属性,该属性的名称将是字母,在每个属性中升序,则可以执行以下操作:

class Var:
    def __init__(self,*args):
        keyVal = 97
        for attr in args:
            self.__dict__[chr(keyVal)] = attr
            keyVal+=1




v1 = Var(1,2,3)
print('Attributes of v1',v1.__dict__)
myList = [4,5]
v2 = Var(*myList)
print("attributes of v2",v2.__dict__)
输出:

{'age': 22, 'name': 'Sam'}
Sam
22
('Attributes of v1', {'a': 1, 'c': 3, 'b': 2})
('attributes of v2', {'a': 4, 'b': 5})

您可以创建具有可变数量属性的类:

class Var:
    def __init__(self,**kwargs):
        for attr in kwargs.keys():
            self.__dict__[attr] = kwargs[attr]




v = Var(name="Sam",age=22)
print(v.__dict__)
print(v.name)
print(v.age)
输出:

{'age': 22, 'name': 'Sam'}
Sam
22
('Attributes of v1', {'a': 1, 'c': 3, 'b': 2})
('attributes of v2', {'a': 4, 'b': 5})
但是,如果要将列表作为参数传递,并将列表中的每个成员分配给类中的一个属性,该属性的名称将是字母,在每个属性中升序,则可以执行以下操作:

class Var:
    def __init__(self,*args):
        keyVal = 97
        for attr in args:
            self.__dict__[chr(keyVal)] = attr
            keyVal+=1




v1 = Var(1,2,3)
print('Attributes of v1',v1.__dict__)
myList = [4,5]
v2 = Var(*myList)
print("attributes of v2",v2.__dict__)
输出:

{'age': 22, 'name': 'Sam'}
Sam
22
('Attributes of v1', {'a': 1, 'c': 3, 'b': 2})
('attributes of v2', {'a': 4, 'b': 5})

为什么需要可变数量的属性?使用包含列表的单个属性。然后如何打印它?在类中定义循环列表并打印值的
\uuu repr\uuu
\uu str\uuu
方法。为什么需要可变数量的属性?使用包含列表的单个属性。那么如何打印它呢?在类中定义循环列表并打印值的
\uuu repr\uuuu
\uuu str\uuuu
方法。很抱歉,我不知道什么是dict或kwargsmeans@AndrésRivero:kwargs表示关键字参数,形式为name=“Sam”,age=22。这些KWARG可以像字典一样在函数中访问,本例中的字典就是kwargs。这里给出了python字典的一个简单解释:Ok。但是如果我想传递一个列表作为参数呢。并将列表中的每个成员分配给类中的一个属性,该属性的名称将是一个字母,在每个属性中升序,如:
self.a=3
self.b=4
等。@AndrésRivero:为我的解决方案添加了更多内容,这应该能回答你的问题。对不起,我不知道什么是dict或kwargsmeans@AndrésRivero:kwargs表示关键字参数,形式为name=“Sam”,age=22。这些KWARG可以像字典一样在函数中访问,本例中的字典就是kwargs。这里给出了python字典的一个简单解释:Ok。但是如果我想传递一个列表作为参数呢。并将列表中的每个成员分配给类中的一个属性,该属性的名称将是一个字母,在每个属性中升序,如:
self.a=3
self.b=4
等。@AndrésRivero:为我的解决方案添加了更多内容,这应该可以回答您的问题