首页 > 解决方案 > 向对象添加属性

问题描述

我试图找到多项式的阶数。我创建了一个名为“order”的方法,将self.order 设置为它所使用的多项式的阶,即polynomial1.order (p1.order)。但是,为了添加 order 属性以便 p1.order 可以工作,我发现我需要先执行 p1.order() 。如何删除此步骤以使其自动执行?

这是我的代码,如果有任何其他失礼,请通知我,我是新来的课程:

class Polynomial(object):

    def __init__(self,*p_coeffs):
        self.p_coeffs = list(p_coeffs)
    def order(self):
        self.order = len(self.p_coeffs)

p1 = Polynomial(2,0,4,-1,0,6)
p2 = Polynomial(-1,3,0,4.5)
p1.order() #<-- this step is the one I want to remove so I do not need to write it for every polynomial
print(p1.order)

提前致谢

编辑:我需要在这个过程中保留我的“订单”方法

标签: pythonclass

解决方案


只需执行您希望在__init__()方法中自动发生的所有实例初始化。

class Polynomial(object):

    def __init__(self,*p_coeffs):
        self.p_coeffs = list(p_coeffs)
        self.set_order()

    def set_order(self):
        self.order = len(self.p_coeffs)

p_list = [
    Polynomial(2,0,4,-1,0,6),
    Polynomial(-1,3,0,4.5),
    ]

for p in p_list:
    print(p.order)

输出:

$ python test.py
6
4

推荐阅读