Добавление атрибутов к объекту - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь найти порядок многочлена. Я создал метод под названием "order", чтобы установить для self.order порядок полинома, на котором он используется, ie polynomial1.order (p1.order). Однако, чтобы добавить атрибут порядка, чтобы p1.order мог работать, я обнаружил, что сначала мне нужно выполнить p1.order (). Как я могу удалить этот шаг, чтобы сделать его автоматизированным c?

Вот мой код, сообщите мне, если есть какие-либо другие поддельные, я новичок в классах:

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)

Заранее спасибо

РЕДАКТИРОВАТЬ: Я необходимо сохранить мой метод "заказа" в процессе

1 Ответ

2 голосов
/ 17 января 2020

Просто выполните инициализацию всех экземпляров, которая должна выполняться автоматически, в методе __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
...