Python: Как передать более одного аргумента методу получения свойства?

Давайте не забывать Главный Первый Java, который мог считать существенным первым шагом на этом языке или возможно шаге после учебных руководств онлайн Sun. Это является большим в целях схватывания языка кратко, при добавлении небольшого количества забавы, служении в качестве стартовой площадки для более всесторонних книг, уже упомянутых.

Sedgewick предлагает большой ряд на Алгоритмах, которые являются необходимой вещью, если Вы находите, что книги Knuth являются слишком всесторонними. Knuth в стороне, Sedgewick приносит серьезный подход к полю, и он предлагает свои книги в C, C++ и Java. Книги C++ могли использоваться backwardly на C, так как он не делает очень большое различие между этими двумя языками в его представлении.

Каждый раз, когда я работаю над C, , Справочник C:A, Harbison и Steele, идет со мной везде. Это кратко и эффективно будучи чрезвычайно полным созданием его бесценный (мне так или иначе).

Языки в стороне, и если этот поток должен стать дежурным для ссылок, в которых я думаю, что он возглавляет тот путь из-за количества стабильных вкладов, включайте Регулярные выражения Освоения по причинам, я думаю, что большинство из нас знает..., некоторые также сказали бы, что regex можно считать языком самостоятельно. Далее, его полноценность в огромном количестве языков делает его неоценимым.

52
задан Rizo 19 April 2011 в 00:27
поделиться

1 ответ

Я просто столкнулся с этой проблемой. У меня есть Многочлен класса (), и я определяю градиент, что я хотел бы возвратить функцию, если никакие аргументы или не оценивают, если существуют аргументы. Я хочу сохранить градиент как атрибут, таким образом, я не должен вычислять его каждый раз, когда я должен использовать его, и я хочу использовать @property, таким образом, атрибут градиента вычисляется лениво. Мое решение состояло в том, чтобы определить класс Градиент с определенным методом вызова для свойства выпускника Многочлена для возврата.

@property
def grad(self):
    """
    returns gradient vector
    """
    class Gradient(list):
        def __call__(self, *args, **kwargs):
            res = []
            for partial_derivative in g:
                res.append(partial_derivative(*args, **kwargs))
            return res
    g = Gradient()
    for i in range(1, len(self.term_matrix[0])):
        g.append(self.derivative(self.term_matrix[0][i]))
    return g

И затем у меня есть следующая тестовая передача успешно:

def test_gradient(self):
    f = Polynomial('x^2y + y^3 + xy^3')
    self.assertEqual(f.grad, [Polynomial('2xy + y^3'), Polynomial('x^2 + 3xy^2 + 3y^2')])
    self.assertEqual(f.grad(x=1, y=2), [12, 25])
    f = Polynomial('x^2')
    self.assertEqual(f.grad(1), [2])

Так, для этой проблемы мы могли попробовать:

class A:
    @property
    def x(self):
        class ReturnClass(int):
            def __call__(self, neg=False):
                if not neg:
                    return 5
                return -5
        return ReturnClass()
0
ответ дан 7 November 2019 в 09:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: