Python-帮助定义一个类,该类根据参数的不同使用不同数量的属性
定义一个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 >>>
>>> 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:为我的解决方案添加了更多内容,这应该可以回答您的问题